목표 : Numpy만을 이용한 신경망 훈련과정 구현
1. 신경망 구성
- 인공신경망(Artificial Neural Network)
- 우리 뇌 속의 신경망 구조에 착안해서 퍼셉트론(Perceptron)이라는 형태를 제안하며 이를 연결한 형태
- = DNN(Deep Neural Network)
1) 다층 퍼셉트론(Multi-Layer Perceptron; MLP)
< 그림 >
< 구현화면 >
- 총 3개의 레이어로 구성된 퍼셉트론 ⇨ 실제는 총 2개의 레이어(hidden layer를 세지 않음)
- 2개 이상의 레이어를 쌓아서 만든 것, 은닉층이 많을 수록 'Deep'함
- 은닉층 H개의 노드, 출력층 K개의 노드가 존재하는 인공신경망
- +1 노드 = bias(편향) : 훈련가능한 상수값, bias를 사용하면 활성화 함수를 left/right 이동 할수 있음
Parameters/Weights
- 입력층-은닉층, 은닉층-출력층 사이에는 각각의 행렬(Matrix)이 존재
- ex) 입력값이 100개, 은닉 노드가 20개 라면 =
100x20
형태의 행렬, 10개의 클래스를 맞추는 문제를 풀기 위해 출력층이 10개의 노드를 갖는다면 은닉층-출력층 사이에는 20x10
형태 행렬이 존재
- 이 행렬들이 Parameter/Weight
y=WX+b
활성화 함수(Activation Functions)
- Sigmod = logistic
σ(x)=1+e−11
- Tanh
tanh(x)=ex+e(−x)ex−e−x
- 문제점
- 함수의 중심값을 0으로 옮겨 sigmoid의 최적화 과정이 느려지는 문제를 해결
- 여전히, vanishing gradient 문제 존재
- RelU
f(x)=max(0,x)
- sigmoid, tanh 함수에 비해 학습이 빠름
- 연산 비용이 적고 구현이 간단함