보편적으로 사용되는 분야 (정해진 것은 아님,classification model이 regression할 수 있도록 할 수 있다)
Regression
Classification
supervised
차수 (일주일 단위)
3-1.
📌
뉴럴 네트워크에 대해서 알아보자.
(뉴럴 넷은 로지스틱에 여러 레이어를 쌓은 버전이라고 보아도 된다… 특히 sigmoid를 activation function으로 이용한다면…)
(classification을 위한 모델)
[Neural Net]
Neural net
뉴럴 넷이 등장하게 된 배경은 무엇일까?
Problem of classification: 전에 다루었던 분류 문제의 문제점은 무엇일까?
exclusive OR problem
but 이 문제 해결하려고 레이어를 깊게 쌓으려고 하다보니 파라미타가 너무 많아져 계산량이 많아진다는 문제가 생기게 되었다…
Problem of Performance: 퍼포먼스(계산량) 문제는 어떻게 해결할까?
GPU: 병렬 연산이 가능한 GPU가 등장하게 되었다.
What
📌
위 문제들을 어떻게 해결했을까? (하드웨어의 발전은 하드웨어 시간에 배우고, 우리는 XOR 문제를 어떻게 해결했는지에 대해서 알아보자.
로지스틱
뉴럴 넷은 로지스틱에 여러 레이어를 쌓은 버전이다…
Neural Net 기본 구조
input layer: observe feature들이 위치하는 layer
hidden layer: hidden(latent) feature들이 위치하는 layer
output layer: output
로 구성되어 있다.
(참고: node에서 주로 위 첨자는 layer 번째 수, 아래 첨자는 unit 번째 수를 적는다.
ex. : 2번째 layer의 첫 번째 unit을 의미한다)
(참고: 가중치에서 주로 위 첨자는 layer 번째 수, 아래 첨자는 (도착 unit 번째 수, 시작 unit 번째 수)를 적는다.
ex. : 2번째 layer의 가중치로 bias→첫 번째 unit으로의 가중치를 의미한다)
Neural Net의 파라미터
파라미터 수는 수식을 통해 구할 수 있다. 이 수식을 위 그림의 파라미터 개수를 구하면 16개가 나옴을 확인할 수 있다. 밑의 수식을 보면 실제로 파라미터가 16개이다.
bias
모델의 정확도를 위하여 추가 해주는 ‘편향’ 값이다.
다른 파라미터를 건드리지 않고, 출력의 임계값 등을 조절하기 위해 사용하는 하나의 ‘파라미터’ 라고 생각하면 편하다.
기계학습개론 시간에는 이 bias node에 1을 넣는다고 배웠다. 이렇게 되면 1*이 되서 가 bia 값으로 사용될 수 있다.
Model: 각 node는 밑의 수식과 같이 표현된다.
이 때 g는 activation function이다. 비선형 문제를 해결해 준다.
Non-Linear Problem
만약 활성화 함수를 쓰지 않는다면 어떤 문제가 발생할까?
예를 들어 밑 그림과 같이 2층 레이어를 쌓았다고 해보자.
이 때 activation 함수를 사용하지 않으면 다음과 같은 결과가 나온다. 단일 레이어 가중치를 w1=w1w5+w2w5, w2=w3w6+w4w6으로 표현한다고 해보자. 그러면 여러 레이어로 쌓은 결과와 같은 결과가 나오게 될 것이다. 이렇게 되면 계속 linear한 모델이 나오기 때문에 non-linear task를 풀 수 없게 된다. 즉 레이어를 여러 개 쌓는 효과가 사라지게 되는 것이다.
물론 선형 함수를 이용하더라도 레이어를 깊게 쌓으면 가중치가 여러 개가 되기 때문에 좋은 결과를 얻을 수도 있지만, 하지만 비선형 함수를 이용할 때 보다 효율이 매우 떨어진다.
ReLU 같은 거 쓰면 output이 Linearity가 되지 않나?
⇒ 어차피 combination이 달라지게 되므로 비선형성이 유지되게 된다.
파라미터 update, 최종 Node 결정하는 방법
How: Forward Propagation
📌
Forward Propergation은 파라미터를 바탕으로 최종 출력을 계산하는 연산이다.
처음 파라미터의 값은 random 값이다. 이 값들을 바탕으로 forward properation을 진행한다. 이 forward propergation은 matrix를 사용해 계산한다.
How: Back Propagation
📌
Back Propergation은 Gradient를 구하는 연산이다.
우리는 밑의 그림과 같은 방법으로 경사 하강을 하며 theta를 업데이트 해야한다. 이를 위해서는 cost function을 theta로 미분한 값을 찾아야 한다. 이를 구하는 연산이 Back propergation이다.
Cost Function
다음과 같은 cost function을 사용한다. logistc reg에서의 cost func이 class 개수 만큼 합해진 것이라 생각하면 된다. 알아만 두자.
내가 헷갈려서 하는 함수 개념 정리…
“NN에서의” 용어
Activation function: 각 Node에 씌워지는 함수
가설 함수: 마지막 layer에 씌워지는 함수
Loss function: 마지막 layer의 가설 함수를 바탕으로 생성되는 함수
이 예시는 sigmoid 가설 함수를 사용할 때의 예시 sigmoid 가설 함수를 쓰지 않으면 당연히 loss function도 바뀌겠지!
Back Propergation
Chain Rule을 활용해서 계산한다. 한 번 손으로 직접 계산 해보자.
(do/dh가 가중치인 이유는 o = h*theta+h*theta..인데, 이를 h로 미분하면 theta가 나오기 때문이다. 나머지는 상수항 취급 되기 때문에 0이 된다)
EX.
Gradient Vanishing
Back propergation을 진행하며 미분 값이 점점 0이 되서 파라미터가 업데이트 되지 않는 문제를 의미한다. (우리는 GD 연산을 할 때 theta = theta - d_theta/d_lossfunction라는 수식을 이용해서 계산한다. d_theta/d_lossfunction가 0에 가까워 진다면 theta가 당연히 업데이트 되지 않을 것이다)
→ 활성화 함수를 바꿈으로써 이 문제를 해결할 수 있다. (Ex. RELU activation function) 이 내용은 딥러닝 개론 시간에 더 자세히 배울 수 있다.
[Classification Example]
Classification Example, How classification?
간단한 classification의 예시이다.
각 node는 파라미터 값에 따라 and, or… gate 역할을 수행할 수 있다. 즉 모델은 forward propagation과 back propagation을 통해서 파라미터를 목적에 맞게 수정하여 분류에 필요한 gate를 구성하는 것이다.
AND
OR
Negation
XNOR
Utilization
지금은 이정도로만 알아두자. 추후에 직접 model을 돌려보며 다양한 활용 분야에 대해서 ‘직접’ 익혀보자.
[Multi-Class]
Multi Class
One-hot Eencoding해서 multi-class에 대해서도 분류할 수 있다.
[Summary]
NN’s Point
뉴럴 넷의 핵심 포인트!
파라미터 설정 (Edge에서 해결해야 할 문제 → 이건 내가 이해하기 쉬우려고 적어둔 말…)
→ forward propergation, back propergation 활용
Non-linear function 잘 활용하기 (Node에서 해결해야 할 문제 → 이건 내가 이해하기 쉬우려고 적어둔 말…)
Procedure of Training
훈련 절차이다.
랜덤으로 weight 초기화 시키기(단 0이 아니게 초기화를 한다. 0이 되면 미분하기 어려워지기 때문이다)