Perceptron
신경망을 이루는 가장 기본 단위
다수의 신호를 입력받아 하나의 신호를 출력
입력 데이터와 가중치의 연산으로 정보 전달
AND GATE
입력 신호가 모두 1(True)일 때 1(True) 출력
NAND GATE (Not AND GATE)
AND GATE 결과의 반대
OR GATE
입력 신호 중 하나만 1(True)이어도 1(True) 출력
XOR GATE
입력 신호가 다를 경우 1(True) 출력
>> 퍼셉트론의 한계
ANN(Artificial Neural Networks)
활성화 함수(Activation Function)
신경망에서 각 노드는 활성화 함수를 가지고 있는데, 일반적으로 각 층에는 같은 종류의 활성화 함수를 지닌다.
다음 층으로 신호를 얼마만큼 전달할지 결정 (transfer function)
보통은 은닉층에는 ReLU 사용, 출력층에는 Sigmoid(이진 분류)나 Softmax(다중 분류) 사용
신경망 층(Layer) 구성
입력층(Input Layers)
데이터셋으로부터 입력을 받는다.
입력 변수의 수와 입력 노드의 수 동일
어떤 계산도 수행하지 않는다.
은닉층(Hidden Layers)
입력층과 마지막 출력층 사이에 있는 층들
출력층(output Layers)
- 회귀 문제에서 예측값이 실수이면 활성화함수 불필요
- 이진 분류 문제의 활성화 함수는 Sigmoid Function 사용. 출력을 확률값으로 변환하여 label 결정
- 다중 분류 문제의 활성화 함수는 Softmax Function 사용. 출력층 노드 수와 label 수 동일
신경망 구조
노드(node)에 입력 신호가 들어오면 각각 고유한 가중치(weights)가 곱해지고 다음 노드에서 입력된 모든 신호의 합 연산
각 노드에서의 연산값이 입계값(Threshold Logic Unit, TLU)을 넘으면 다음 층(layer)으로 신호 전달
신경망의 비선형성(Nonliearities)
데이터의 차원이 매우 높으며 비선형 패턴을 가진 데이터를 학습하려면 그에 따라 매우 복잡한 다차원의 특성 조합이 이루어져야 한다. 딥러닝은 활성화 함수로 비선형성을 만들어 내서 좀 더 유용해진다.
표현 학습(Representation Learning)
스스로 특성 관계를 찾아내는 것
머신러닝과 딥러닝의 차이는 표현 학습에 있다.
머신러닝은 사용자가 직접 데이터를 파악하여 그 특징에 맞는 특성들을 설계하고 찾아낸다.
반면 딥러닝은 데이터에서 필요한 특성들을 스스로 조합하여 찾아낸다. 신경망의 구조와 깊이를 변화시키면 데이터를 더욱 유용하게 표현할 수 있다.
경사하강법과 역전파 알고리즘
신경망의 학습(training)은 적절한 가중치를 찾아가는 과정이다.
신경망은 경사하강법과 역전파를 통해 스스로 적절한 가중치를 찾는다.
경사하강법에 필요한 기울기(gradient) 계산을 역전파 알고리즘을 통해 구하게 된다.
순전파
입력층에서 입력된 신호가 은닉층의 연산을 거쳐 출력층에서 값을 내보내는
과정
신경망 학습 알고리즘 요약
신경망 구조 설계
가중치를 랜덤하게 초기화
순전파를 통해 모든 입력 데이터에 대한 출력값 계산
비용 함수(손실 함수) 계산
역전파를 통해 각 가중치에 대한 편미분 값 계산
경사하강법을 사용하여 비용함수를 최소화하는 방향으로 가중치 갱신
역전파(Backpropagation, BP)
손실 정보를 출력층부터 입력층까지 전달하여 각 가중치를 얼마나 업데이트 해야할지 결정하는 알고리즘
경사하강법(Gradient Descent, GD)
손실을 줄이는 방향 결정
Optimizer
경사하강법에서 지역 최적점에 빠지는 문제를 방지하는 알고리즘
경사를 내려가는 방법 결정
얼마만큼의 데이터를 사용하여 어떻게 가중치를 업데이트 할지 결정
NN Training Options
손실 함수(Cost function) 혹은 오차 함수(Error function)
평균 제곱을 기반으로 하는 손실 함수
MSE(Mean Squared Error)
RMSE(Root Mean Squared Error)
MAE(Mean Absolute Error)
R-Squared
...
엔트로피를 기반으로 하는 손실 함수
Binary Crossentropy
Categorical Crossentropy
...
과적합을 방지하기 위한 방법 (Regularization Strategies)
Early Stopping
학습 데이터셋에 대한 손실은 계속 줄어들지만 검증 데이터셋에 대한 손실은 증가한다면 학습 종료
Weight Decay
과적합은 가중치의 값이 클 때 주로 발생
>> 손실 함수에 가중치와 관련된 항을 추가하여 값이 너무 커지지 않도록 조정
어느 layer(visible vs hidden)에 적용하는지에 따라 다른 효과를 불러올 수 있다.
사용하고 있는 모델이 과적합이나 일반화 문제가 있지 않다면 굳이 쓸 필요는 없다.
Learning rate Decay / Scheduling
NN Hyperparameters
Hyper-parameter
좋은 예측을 위해 사전에 정의되는 값
Parameter
좋은 예측을 위해 업데이트 되어야 하는 변수
Babysitting one model
데이터는 방대하지만 CPU나 GPU 등 컴퓨터 자원이 많이 필요하지 않아서 적은 숫자의 모델을 한번에 학습시킬 수 있을 때 사용
며칠, 몇 주에 걸쳐 매일 모델을 돌보며 학습
성능을 잘 지켜보다가 학습 속도를 조금씩 바꾸는 방식
여러 모델을 동시에 학습시킬 컴퓨터 자원이 충분하지 않을 때 사용
Training many models in parallel
하이퍼파라미터를 며칠에 걸쳐 스스로 학습하게 하고 동시에 다른 모델의 다른 하이퍼파라미터 설정을 다루는 방식으로 서로 다른 모델을 동시에 학습
여러 하이퍼파라미터 설정을 시험해 볼 수 있고, 마지막에는 최고 성능을 보이는 것 선택
튜닝 가능한 하이퍼파라미터 옵션
batch_size
The number of samples that will be passed through to the network at one time (batch a.k.a. mini-batch)
Larger batches
- Faster training
- GPU memory limitations
training epochs
optimization algorithms
optimizer
옵티마이저에 따라 하이퍼파라미터의 종류, 값 등도 달라지므로 어떤 옵티마이저를 선택하느냐에 따라 옵티마이저의 learning rate이나 momentum을 튜닝해야 할 수도 있다.
- adam
보통 가장 좋은 결과 제공
- adamW
...
learning rate
경사하강법 기반의 optimizer 선택을 위한 하이퍼파라미터 (default = 0.01)
너무 높게 설정하면 모델이 발산하고, 너무 낮으면 수렴에 실패하므로 최적의 학습율을 찾아야 한다.
epoch 횟수도 같이 튜닝하는 것이 좋다. learning rate이 최솟값에 도달할 수 있을 때까지 iteration의 횟수를 충분히 설정했는지 판단할 수 있기 때문
momentum
옵티마이저가 최솟값을 overshooting하게 결정하는 속성
진행 중인 방향으로 관성을 더해 지역 최소점(local minima)에 빠지지 않도록 함
ADAM(Adaptive Momentum Estimation)
기울기의 지수 평균과 기울기의 제곱의 지수 평균
activation functions
dropout regularization
hidden layer의 neuron 개수
...
Network Weight Initialization
어떤 가중치 초기화 모드를 선택하는지에 따라 모델의 초기 정확도에 큰 영향을 끼친다.
가중치를 잘 초기화하면 훨씬 적은 epoch로 모델을 위한 최적의 가중치를 찾을 수 있다.