Neuron
: 사람의 뇌 속에 있는, 가장 작은 정보처리 단위로서 세포체, 수상돌기, 축삭으로 구성된다.
Biological Neural Network(생물 신경망)
:
Neuron은 망을 형성하므로 Neuron의 집합을 Biological Neural Network라고 한다.
Aritificial Neural Network(인공 신경망)
:
Biological Neural Network를 공학적으로 접근하여 인공적으로 모방한 모델.
Feedforward Neural Network
& Recurrent Neural Network
Feedforward Neural Network(전방 신경망)
:
모든 계산이 왼쪽에서 오른쪽으로 진행된다.
DMLP(Deep Multi Layer Perceptron)과 CNN(Convolution Neural Network)이 Feedforward Neural Network에 속한다.
Recurrent Neural Network (순환 신경망)
:
오른쪽에서 왼쪽으로 진행하는 Feedback 계산도 포함된다.
RNN(순환 신경망)과 LSTM이 Recurrent Neural Network에 속한다.
Shallow Neural Network
& Deep Neural Network
Shallow Neural Network
:
은닉층이 1~2개 정도인 Neural Network를 Shallow Neural Network라고 한다.
Deep Neural Network
:
은닉층을 많이 가진 Neural Network을 Deep Neural Network라고 한다.
Deterministic Neural Network
& Stochastic Neural Network
Deterministic Neural Network
:Stochastic Neural Network
:구조
입력층
과 출력층
이 존재.Feature Vector
의 Feature 하나에 해당.bias
라고 하는 node도 존재.edge
는 입력 node와 출력 node를 연결한다.weight
를 갖는다.동작
행렬 표기
위의 예제를 기하학적으로 나타내면 다음과 같다.
2차원
에서 특징 공간을 나눔으로써 Classification을 결정하는 경계선을
Decision Line
이라고 한다.
은 직선의 방향, 은 절편을 결정하여 다음과 같은 직선의 방정식을 구할 수 있다.
➡️
3차원
에서 특징 공간을 나눔으로써 Classification을 결정하는 경계면을
Decision Plane
이라고 한다.
은 직선의 방향, 은 절편을 결정하여 다음과 같은 평면의 방정식을 구할 수 있다.
➡️
4차원 이상
에서 특징 공간을 나눔으로써 Classification을 결정하는 경계를
Decision Hyperplane
이라고 한다.
은 직선의 방향, 은 절편을 결정하여 다음과 같은
방정식을 구할 수 있다.
➡️
Decision Line, Decision Plane, Decision Hyperplane처럼 특징 공간을 나누며 Classification을 결정하는 경계를 Decision Boundary
라고 한다.
앞에서는 학습이 이미 다 되어 있는 Perceptron에 대해서 Test한 셈이다.
이제는 Train Set으로 Perceptron을 어떻게 학습시키는지 살펴보자.
OR Classification 문제를 AND Classification 문제로 바꿔서
가 어떤 값을 가져야 4개의 Sample을 제대로 분류할 수 있을까?
Haberman Survival Classification 문제는 간단한 데이터 축에 속하는데,
feature vector가 3차원이고, Sample이 306개나 되어,
사람이 weight 매개변수값을 찾는 것은 매우 어렵다.
따라서 자동으로 최적의 매개변수값(weight)을 찾아주는 학습 알고리즘에 대해서 공부할 것이다.
목적함수 유도
delta rule 유도
delta rule
이 나온다.delta rule 행렬 표기
현대 기계 학습은 Batch version보다 Stochastic version을 채택한다.
Stochastic version의 성능이 더 좋다고 입증되었다.
(사실은 추후에 공부할 mini batch stochastic...)
Perceptron의 동작은 다음과 같이 규정되므로 Linearly Separable한 상황밖에 처리하지 못한다.
따라서 다음의 (b)와 같이 Linearly Non-separable한 상황은 일정한 양의 오류를 범할 수 밖에 없다.
Multi-layer Perceptron(MLP, 다층 퍼셉트론)
은
여러 개의 Perceptron을 결합한 다층 구조를 이용하여
위의 예시와 같이 Linear non-separable한 상황을 해결할 수 있다.
은닉층
을 둔다.새로운 특징 공간으로 변환
한다.Sigmoid Activation Function
을 도입한다.Soft 의사결정
이 가능하다.융통성 있는 의사결정
을 할 수 있다.Back Propagation(오류 역전파)
알고리즘을 사용한다.위의 핵심 아이디어와 함께 모멘텀, 적응적 합습률, 미니배치, 규제와 같은 요령을 적용한다. (Chapter 5에서..)
1-(a)
를 보면, Decision Line 2개로 XOR Classifier 문제를 해결할 수 있음을 알 수 있다.
1-(a)
의 Decision Line을 결정하기 위한 각각의 Perceptron은 1-(b)
와 같이 만들 수 있다.
1-(b)
를 병렬 결합하여 2-(a)
의 Perceptron으로 만들 수 있다.
2-(a)
Perceptron에 대해서 특징 공간 를 그리면,
2-(b)
와 같이 새로운 특징 공간 로 변환된다.
3-(a)
의 - (파란 실선)은 새로운 특징 공간 를 Classification하는 세 번째 Perceptron이다.
(새로운 특징 공간 는 Linearly separable한 상황이 된다)
3-(a)
의 세번째 Perceptron을 결합한 최종 MLP는 3-(b)
와 같다.
3-(b)
는 XOR Classification을 구현하는 MLP가 된다.
위의 예제에서, feature vector가 2차원인 input에 대해
Perceptron을 2개 사용하여 2차원 공간으로 변환되었다.
아래 예제에서, feature. vector가 2차원인 input에 대해
Perceptron을 3개 사용하여 3차원 공간으로 변환되었다.
일반화하면
원래 Feature Vector가 2차원이고 Perceptron을 p개 결합한 상황에서,
이때 신경망은 2차원 공간을 p차원 공간으로 변환한다.
또한 p개의 직선은 개의 공간을 나눌 수 있다
따라서 p가 클수록 신경망의 용량이 크다.
하지만 용량이 너무 크게 되면(Perceptron이 너무 많게 되면),
Overfitting될 가능성이 커지므로 무턱대고 크게 할 수는 없다.
(적당한 p를 결정하는 문제는 나중에 다룬다)
Activation Function으로
Step Function을 사용했을 경우, Hard 의사결정(영역을 점으로 변환)
이었다.
나머지 Activation Function으로 Soft 의사결정(영역을 영역으로 변환)
을 내릴 수 있다.
➡️ Soft 의사결정을 내릴 수 있게 하는 Activation Function에 대해 알아보자. (b ~ d)
Sigmoid Function
, Hyperbolic Tangent Function
:
Retifier Linear Unit(ReLU) Function
:
Perceptron은 Step Function,
MLP는 Logistic Sigmoid와 Hyperbolic Tangent Function,
딥러닝은 ReLU를 주로 사용한다.
위에서 XOR Classification을 구현했던 MLP를 좀 더 일반화하면 다음과 같다.
Multi-Layer Perceptron(MLP, 다층 퍼셉트론)
: Perceptron(단층 Perceptron)과 달리 층이 여러 개이기 때문에 MLP라고 한다.
Hidden Layer(은닉층)
: 입력층과 출력층 사이에 놓인 층.
입력층은 주어진 Feature vector를 입력하는 곳이고,
출력층은 신경망의 최종 출력이 나오는 곳으로서 두 곳 모두 값을 관찰할 수 있는 반면,
은닉층은 계산의 중간과정으로서 보이지 않는 곳이라는 뜻에서 '은닉'이라는 명칭이 붙음.
은닉층이 약 4개 이상이 되면 Deep Neural Network
로 취급한다.
Deep Neural Network을 학습시키는 알고리즘을 Deep Learning
이라고 한다.
(딥러닝은 Chap 4에서 공부..)
(a) : 2층 Perceptron
의 parameter는가중치 표기법
은 다음과 같다.Train Set이 주어져 문제가 확정되면 MLP의 구조 중
input node와 output node의 개수는 자동으로 정해진다.
(ex. 숫자 인식 Train Set의 input node는 (d+1), output node는 10(c)개)
하지만 은닉층에 있는 node 개수 는 사용자가 지정해야 한다.
이렇게 사용자가 지정해야 하는 parameter를
hyper parameter
(hidden node 개수, Activation Function 종류, Running Rate 등)라고 한다.
hidden node 개수 가
너무 크면 Overfitting,
너무 작으면 Underfitting의 위험이 있으므로 적절한 값을 선택해야 한다.
(hyper parameter를 최적화하는 문제는 Chapter 5에서...)
위의 그림에서 는 은닉층의 모든 node에 영향을 미친다.
그리고 그 결과는 또 출력층의 모든 node에 영향을 미친다.
모든 입력 node가 이러한 방식의 영향을 미치므로 신경망은 분산처리
를 한다고 한다.
은닉층에 있는 한 node가 라는 시간을 소비한다면,
은닉층이 계산을 마치는 데 라는 시간이 걸린다.
그런데 각 노드는 각자 독립적으로 자신의 값을 계산할 수 있으므로
GPU와 같은 병렬처리기를 사용하면 라는 시간에 계산을 마칠 수 있다.
따라서, MLP는 병렬처리
를 한다고 한다.
(물론 번째 층의 계산 결과를 에서 번째 층의 입력으로 사용하기 때문에
인접한 층 사이에서는 계산이 순차적으로 일어난다.)
MLP는 분산처리와 병렬처리를 수행하므로 병렬분산 구조라고 할 수 있다.
MLP의 동작을 간략하게 생각해보면,
다음과 같이 vector 를 vector 로 mapping하는 함수로 볼 수 있다.
MLP(2층 Perceptron)의 동작을 행렬로 표기하면 다음과 같다.
은닉층이 자동으로 계층적인 feature를 추출하는 접근방법
을 사용한다.계층적
은 앞 쪽에 있는 low-level feature를 뒤 쪽에 있는 은닉층들이 입력받아은닉층
()은 Feature Extractor
로서 역할을 한다.특징 학습(feature learning)
이라고 한다.Error Backpropagation(오류역전파)
가 등장한다.Train Set이 n개의 Sample이 있고,
다음과 같은 특징 벡터 행렬 와 소속 부류 행렬 가 있다고 가정하자.
➡️ MLP의 출력 와 주어진 부류 정보 의 차이를 최소화 하는
최적의 paramter 를 찾아야 한다.
() 식을 토대로 목적함수를 설계하면 다음과 같다.
목적함수를 적용하여 의 부류 벡터 와 출력 의 MSE(Mean-Squared Error)를 계산한다.
Online Mode(Stochastic Gradient Descent에 사용되는 방법)
:Batch Mode(Batch Gradient Descent에 사용되는 방법)
:수식 전개가 보다 간편한 온라인 모드(Stochastic Gradient Descent에 사용되는)로 선택
2 Layer Perceptron이라고 가정한다.
목적함수 는 다음과 같이 정의한다.
의 최저점을 찾아주는 Gradient Descent는 다음과 같다.
( : Running Rate)
위의 수식을 바탕으로 MLP 알고리즘을 구체화 하면 다음과 같다.
feeforward(전방) 계산은 왼쪽에서 오른쪽으로(➡️) 계산했지만,
위의 과정(오류 역전파)은 오른쪽에서 왼쪽으로(⬅️) 계산한다.
왜냐하면 출력 vector 와 부류 vector 의 차이에 따라 Gradient값이 결정되는데,
출력층에 바로 연결된 가중치가 이기 때문에 를 먼저 처리한다.
그런 다음 의 계산 결과를 이용하여 를 처리한다.
이처럼 전방 계산과 달리 계산이 반대 방향으로 흐르고,
계산 과정에서 와 의 차이, 즉 오류를 줄이는 방향으로 전파하기 때문에
오류 역전파(Error Backpropagation)라는 이름이 붙었다.
위에서 유도한 오류 역전파 공식을 구체화하면 다음과 같다.
Sample 하나의 gradient를 계산한 후 즉시 weight를 갱신한다.
이러한 방식을 stochastic learning
또는 online learning
이라고 한다.
(추후에는 여러 Sample의 gradient 평균을 구한 다음 한꺼번에 weight를 갱신하는
미니배치 방식을 공부할 것이다.. 현대 기계 학습은 미니배치 방식을 주로 사용한다.)
행렬 표기로 나타내면 다음과 같다.
(GPU를 사용하면 행렬 연산 속도는 매우 향상된다.)
앞서 Stochastic Gradient Descent(SGD)
에서는
한 번에 하나의 Sample의 gradient를 계산한 다음 weight를 갱신했다.
(한 번에 처리하는 Sample 수를 라고 하면, )
➡️ 이 과정을 모든 Sample에 수행하면 한 epoch가 지나는데,
최저점에 수렴할 때까지 여러 epoch을 반복한다.
➡️ 문제점
: 실제 데이터에 실험하면,
Sample로 계산한 gradient는 잡음을 많이 포함하게 되어
최저점을 찾아가는 경로가 매개변수 공간에서 갈팡질팡하는 경향을 보인다.
(수렴하는 데 시간이 오래 걸린다.)
또한 Batch Gradient Descent(BGD)
방식은
모든 Sample의 gradient를 계산한 다음 평균 gradient를 구하여 한꺼번에 갱신했다.
(한 번에 처리하는 Sample 수를 라고 하면, )
➡️ 이 방식도 또한 극단적인 방식으로, 여러 문제점이 존재한다.
- 모든 Sample의 gradient를 계산한 다음 평균 grdient를 구하여 한꺼번에 갱신하면 된다.
이 방식을Mini Batch Stochastic Gradient Descent
라고 한다.
현대 기계학습에서는 Mini Batch SGD를 널리 사용하므로
mini batch를 생략하여 그냥SGD
라고 부르기도 한다.
따라서 SGD가 진짜 SGD인지 Mini Batch가 생략된 SGD인지 잘 구별해야 한다.
학습을 마친 MLP는 응용 현장에 설치하여 활용되는 인식 단계로 넘어간다.
이 단계를 Test 단계
또는 예측 단계
라고 한다.
출력 벡터 에서 가장 큰 값을 가지는 부류를 찾는다.
Test 단계의 알고리즘은 전방 계산만 사용하므로 매우 빠르다.
신경망은 Traininig(학습)을 마치면, Train Set을 가지고 있을 필요가 없다.
대신 weight를 저장한다.
Test 단계(인식 단계)는 Train 단계보다 빠르고, 메모리 효율이 좋다.
MLP는 Universal Approximator(범용 근사자)
이다."휴리스틱(heuristic)
: 주어진 문제를 해결하기 위한 규칙이나 방법기초적인 알고리즘만으로는 만족할 만한 성능을 얻기 어렵다.
따라서 신경망 연구자들은 성능을 높일 수 있는 갖가지 휴리스틱을 개발
하고 공유하는 연구 문화를 누려왔다.중요한 쟁점들
.아키텍처
: 은닉층과 은닉 노드의 개수를 정해야 한다.초깃값
: 보통 난수를 생성하여 설정하는데, 값의 범위와 분포가 중요하다.(Chap 5.2)학습률
: 처음부터 끝까지 같은 학습률을 사용하는 방식과 처음에는 큰 값으로 시작하고활성함수
: 초창치 MLP는 주로 sigmoid나 tanh 함수를 사용했는데,이 매개변수들을 잘 설정해야 만족할 만한 성능을 얻을 수 있다.