도서 : 신경망 첫걸음(한빛미디어)
지음 : 타리크라시드(송교석 옮김)
- 이전 챕터에서 우리는 y = ax + c 라는 한 개의 선으로 분류할 수 있다는 것을 알게 되었습니다. 그러나 그 중에는 한 개의 분류자로 분류할 수 없는 것들도 있습니다.
- 우선 AND와 OR의 연산을 살펴보았을 때, AND는 입력 값이 (1,1) 일 때만 1의 결과가 나오고 나머지 (0,0), (0,1), (1,0) 의 입력은 모두 0이라는 결과가 나옵니다. 이를 그림으로 표현해보면 다음과 같은 그림이 나옵니다
- 그리고 OR는 입력 값이 (0,0) 일 때만 0의 결과가 나오고 나머지는 1이라는 결과가 나옵니다. 마찬가지로 그림으로 표현해본다면 다음과 같습니다.
- 그러나 XOR라는 연산자가 있습니다. 이 연산자는 (1,0), (0,1)과 같이 서로 다른 BOOL값이 입력되었을 경우에만 1이라는 결과가 나옵니다. 이는 하나의 선으로 표현할 수 없게됩니다.
- 따라서 이러한 XOR의 경우는 다음과 같은 두 개의 선으로 표현할 수 있습니다.
이런식으로 여러 개의 선형 분류자를 이용해 데이터를 분류하면 더욱 깔끔하고 자세한 판단을 하도록 만들 수 있게 되는 것입니다.
-
대자연의 컴퓨터, 뉴런
-
뉴런이란 신경세포로 전기신호를 전송하여 우리가 어떤 것을 인지할 수 있도록 해주는 세포입니다. 인간의 뇌는 약 1천억 개의 뉴런을 가지고 있습니다. -> 초파리는 10만 개 정도의 뉴런으로도 음식을 찾아 섭취하고, 위험을 피하는 등 상당히 복잡한 업무를 수행할 수 있습니다. 오늘날의 컴퓨터가 충분히 복제할 수 있는 수준입니다.
-
결론적으로 우리는 앞서 해봤던 대로 뉴런을 선형함수로 표현할 수 있을까요? 정답은 아니오 입니다. 생물학적 뉴런은 단순한 선형함수가 아니라는 것입니다.
-
과학자들의 관찰에 의하면 뉴런은 입력을 받았을 때 즉시 반응하는 것이 아니라 입력이 누적되어 어떤 수준으로 커진 경우에만 출력을 하게 됩니다. 이것을 분계점(threshold)이라고 합니다.
-
입력 신호를 받아 특정 분계점을 넘어서는 경우에 출력 신호를 생성해주는 함수를 활성화 함수(activation function)라고 합니다. -> ex)계단 함수(step function) - 입력 값이 작은 경우 출력 값은 0이다가 입력 값이 분계점 이상이 되면 출력 값이 갑자기 올라감
-
fire(작동한다) : 입력 값이 분계점에 이르러 출력을 발생시키는 현상
-
이번에는 시그모이드 함수(sigmoid function)입니다. 시그모이드 함수는 부드러운 형태를 가집니다.
-
앞으로 인공 신경망을 만들 때 이처럼 부드러운 S자 형태를 가지는 시그모이드 함수를 활용할 것입니다. 로지스틱 함수(rogistic function)라고 부르기도 합니다. 수식은 다음과 같습니다.
-
뉴런이 여러 개의 입력을 받아 처리하는 방식 - 만약 a, b, c의 합인 x가 분계점을 넘어설 정도로 충분히 크지 않다면 시그모이드 함수는 아무것도 출력하지 않게 됩니다.
-
생물학적인 뉴런을 인공적으로 모델화한다면 뉴런을 여러 계층(layer)에 걸쳐 위치시키고, 각각의 뉴런은 직전 계층과 직후 계층에 있는 모든 뉴런들과 상호 연결되어 있는 식으로 표현하면 될 것입니다.
-
이 그림에서는 3개의 계층이 있으며, 각각의 계층에는 뉴런이 3개씩 존재함을 확인할 수 있습니다. 이 각각의 인공 뉴런을 노드(node)라고 합니다.
-
가중치(weight) : 낮은 가중치는 신호를 약화하며 높은 가중치는 신호를 강화합니다.
-
FC(fully - connected) : 모든 노드가 연결되는 것 -> 사실 꼭 모든 노드가 연결되어야 한다는 법은 없습니다. 일반적으로 모든 노드 간에 연결을 하는 이유는, 이렇게 연결해야 프로그램으로 구현하기가 편리하며, 문제를 해결하기 위해 필요로 하는 절대적인 최솟값보다 연결이 몇 개 더 있다고 해서 별문제가 되는 것도 아니기 때문입니다.
-
일부 가중치들은 0에 가까운 값 또는 심지어 0이 될 수도 있습니다. 가중치가 0이 된다면 신호에 0을 곱한다는 말이므로, 신호가 0이되는 해당 연결은 사실상 끊어진 것이나 다름없게 됩니다.
'Deep-Learning > Deep-Learning 기초 지식' 카테고리의 다른 글
[신경망 첫걸음]데이터 준비하기 (0) | 2019.02.20 |
---|---|
[신경망 첫걸음]가중치의 진짜 업데이트 (0) | 2019.02.20 |
[신경망 첫걸음]여러 노드에서 가중치 학습하기(역전파) (0) | 2019.02.19 |
[신경망 첫걸음]신경망 내의 신호 따라가기 (0) | 2019.02.17 |
[신경망 첫걸음]인공 신경망의 동작 원리 (0) | 2019.02.04 |