10.1.1 생물학적 뉴런
- 시냅스 말단이라는 구조를 통해 정보를 전달받음
- 이 정보를 신경전달물질이라는 화학적 신호로 바꾸어 다른 뉴런의 수상돌기나 세포체에 연결됨.
- 인공 신경망의 인공 뉴런 또한 비슷한 원리로 작동함.
- 여러 개의 input을 전달받으면 activation function을 거쳐 특정 output으로 도출해냄.
- 여러 개의 데이터를 받아 특정 결과를 도출해낸다는 점에서 생물학적 뉴런 구조와 인공 뉴런과 상통함.
10.1.2 뉴런을 사용한 논리연산
- 생물학적 뉴런에서 착안한 매우 단순한 신경망 모델
- A, B는 input, C는 네트워크이다.
- 첫 번째 네트워크는 항등함수이다.
- 두 번째 네트워크는 논리곱 연산을 수행한다. A and B 모두 켜져있을 때 C 함수가 활성화 된다.
- 세 번째 네트워크는 논리합 연산을 수행한다. A or B가 켜져있을 때 작동한다.
- 네 번째 네트워크는 B가 켜져있지 않고 A가 켜질 때 활성화 된다.
퍼셉트론
- 퍼셉트론은 TLU(Threshold Logic Unit), LTI(Linear threshold unit)
- Input : binary value가 아닌 연속적인 value
- Input function 에서는 input 벡터들을 받아 선형결합을 한 값을 출력한다.
- Activation Function에서는 heaviside step function 또는 signal function을 사용한다.
- TLU를 훈련한다는 것은 최적의 w0, w1, w2, … wn을 찾는다는 의미.
- 이러한 단일 퍼셉트론은 이진 분류 문제에 활용 가능하다.
층이 하나인 TLU(Threshold Logic Unit)
- 완전 연결층(Fully connected layer), 밀집 층(Dense Layer) : 한 층에 있는 모든 뉴런이 이전 층에 있는 모든 뉴런과 연결되어 있음
- 입력 뉴런 : input을 받는 뉴런. 받은 input에 어떠한 처리 없이 그대로 output으로 return한다.
- 입력 층(input layer) : 입력 뉴런으로 구성된 층
- 편향 뉴런(Bias neuron) : bias를 더해주는 뉴런
- 위 그림은 2개의 input을 받아서 3개의 label로 분류해주는 multi label classifier이다.
완전 연결층의 출력 계산
- 위 식은 완전연결층의 출력을 수식으로 나타낸 것이다.
- X는 input을 뜻한다.
- W는 bias를 제외한 모든 연결 가중치를 뜻한다.
- 모든 인공 뉴런마다 하나의 편향 값이 존재한다.
- $\phi$ 는 activation function을 뜻한다.
퍼셉트론의 훈련
- Donald Hebb : 생물학적 뉴런 A와 B가 있다고 했을 때 A가 B를 활성화 시킬 때마다, A와 B의 연결은 더욱 강해진다.
- Donald Hebb의 아이디어에서 영감을 받은 프랑크 로젠블라트는 위와 같은 뉴런 학습 아이디어를 제시함
- 왼쪽 항에 있는 ${W_{i,j}}^{(next step)}$ 은 update할 가중치이다. 즉 update할 가중치를 구하는 수식이다.
- 오른쪽 항에 있는 $W_{i,j}$ 는 현재 step의 가중치이다. 𝑖번째 뉴런과 𝑗번째 뉴런을 연결하는 가중치이다.
- $\eta$는 학습률(Learning Rate)을 뜻한다.
- $\hat{𝑦}$ 은 출력 뉴런의 출력값이다.
- $y$는 훈련 샘플의 True 값, 혹은 Target값이다.
단층 퍼셉트론의 한계
- 단층 퍼셉트론을 통해서는 선형 분류가 가능하다.
- 하지만, 선형 분류를 통해 불가능한 문제가 존재했는데, 바로 XOR이다.
- XOR문제를 풀기 위해서는 비선형 분류가 가능한 모형을 만들어야 한다.
10.1.4 다층 퍼셉트론과 역전파
- 입력층, 1개 이상의 은닉층, 출력층으로 구분되어 있다.
- 출력층을 제외하고 모든 층은 bias neuron을 포함하고 다음 층과 완전히 연결되어 있다.
- 은닉층을 여러 개 쌓아 올린 신경망 모형을 DNN(Deep Neural Network)라고 한다.
다층 퍼셉트론 훈련 방법 - Backpropagation
- 역전파는 오차를 감소시키는 방향으로 가중치를 update하는 방법이다.
- Epoch : 가중치를 update하는 한 주기의 Loop를 뜻한다.
- Forward pass : 가중치를 통해 target value에 대한 예측값을 구하는 단계
- Backward pass : Forward Pass를 통해 구한 예측값으로 가중치를 update하는 단계
- Chain rule : 역전파 과정에서 가중치 update시 사용되는 미분 기법
- https://www.youtube.com/watch?v=aUd2MKLvDsc 참고
다층 퍼셉트론 Activation Function
- 다층 퍼셉트론의 가중치 update를 위해서는 backpropagation과정을 거쳐야 하는데, 이 때 미분을 통해 기울기 계산을 해야 한다.
- 단층 퍼셉트론에서 봤던 계단함수는 수평선 밖에 없으므로 사용할 기울기가 존재하지 않는다.
- 때문에 ReLU나 Hyperbolic Tangent와 같은 함수를 Activation으로 사용한다. 언급한 두 가지 외에도 여러가지 activation function이 존재한다.
- 왼쪽은 원래 함수의 그래프이고 오른쪽은 도함수 그래프이다.
선형 함수를 Activation Function으로 사용하지 않는 이유
- h1, h2, h3는 각각 같은 층에 속해있는 neuron이고 선형 함수를 activation function으로 가지고 있다.
- W는 가중치이다.
- X1, X2는 input이다.
- Y는 output layer의 neuro이다.
- Output 을 보면 선형 함수 식으로 나타나는 것을 볼 수 있다.
- XOR문제에서 보았듯이 선형적으로 구분되지 않는 문제를 풀기 위해 DNN이 도출되었다. 그런데 Activation Function을 선형 함수로 설정하면, * hidden layer를 추가해 비선형적인 구분을 가능케 한다는 DNN의 목적이 전혀 달성되지 않는다는 것을 알 수 있다.
- 그렇기 때문에 activation function으로는 선형 함수를 사용할 수 없다.
다층 퍼셉트론 회귀 활용
- 회귀용 다층 퍼셉트론을 만들 때 출력 뉴런에 activation function을 사용하지 않고, 어떤 범위의 값도 출력되도록 함. 다시 말해 이전 층의 값을 가중합 한 결과를 그대로 출력한다.
- 만약, 회귀분석 결과 값을 0 이상으로 제한해야 한다면, ReLU, softplus 함수를 사용한다.
- 만약, 회귀분석 결과를 0~1사이의 값으로 제한하고 싶으면 Sigmoid함수를 사용한다.
- 만약, 회귀분석 결과를 -1~1사이의 값으로 제한하고 싶으면 hyperbolic tangent함수를 사용한다.
10.1.6 분류를 위한 다층 퍼셉트론
이진 분류 문제
- 0~1사이의 값을 출력해야 하는 이진 분류 문제의 경우 output layer에 1개의 neuron만 필요하다.
- 예를 들어 앞서 살펴본 iris 데이터의 경우 versicolor를 구한다고 생각해보자.
- Input은 sepal width, sepal length, petal width라고 가정한다.
- 이 때 output은 versicolor인지 아닌지를 0과 1의 값을 통해 표시하게 된다.
다중 이진 분류 문제
- 다중 레이블 이진 분류의 경우 softmax함수를 사용하여 분류한다.
- 다시 iris 문제를 생각해보자. 이번에는 versicolor인지만 분류하는 것이 아니라, verginica, versicolor, setosa 셋 중 무엇인지를 분류하는 문제이다.
- 이 때 input을 넣으면 output layer의 softmax함수에 의해 결과 값이 각 레이블의 확률값으로 나타난다.
- 예를 들어 [0.1, 0.8, 0.1]과 같이 결과 값이 도출되는데, 이는 verginica일 확률이 0.1, versicolor일 확률이 0.8, setosa일 확률이 0.1이라는 뜻이다
'Deep Learning > Hands On Machine Learning' 카테고리의 다른 글
12.2 넘파이처럼 텐서플로 사용하기 (0) | 2021.09.29 |
---|---|
12.1 텐서플로 훑어보기 (0) | 2021.09.29 |
10.4 연습문제 (0) | 2021.09.24 |
10.3 신경망 하이퍼 파라미터 튜닝하기 (0) | 2021.09.24 |
10.2 케라스로 다층 퍼셉트론 구현하기 (0) | 2021.09.22 |