신경망(1) : 퍼셉트론
Machine Learning
정의
- 데이터, 경험으로부터 모델을 구축하는 기술을 의미.
- 파라미터를 자동 구축(확률을 통해서)
- 모델의 구조를 자동으로 결정(BN graph를 통해 그래프의 구조, 모양)
- 데이터에 감춰진 개념(clustering을 통해)
Perceptron for classification
- Data를 이용해서
Model Construction
을 하고, - 만들어진 모델에 대해
Test Data
를 통해 모델 검증을 한다.
Examples
숫자 인식
-
이를 위한 구성요소는 다음과 같다.
- input : Images/pixel grids
- output : a digit 0 ~ 9
- Setup:
- 숫자가 라벨링된 대량의 이미지 수집(라벨:각 이미지 별로 어떤 숫자인지 명시된)
- 누군가가 일일히 데이터에 대해 라벨링을 해야한다.
- 미래의 라벨링되지 않은 데이터의 라벨을 예측
- Features: 숫자를 결정하는데에 사용되는 속성
- Pixels: (6, 8) = ON (특정 픽셀좌표에 색이 있다 or 없다)
- Shape patterns: 컴포넌트 숫자, x:y비율, loop개수(선의 휨)
Spam email Filter
- input : an email
-
output: spam/ham
-
Setup:
- 스팸메일인지 아닌지 라벨링된 대량의 이메일
- 누군가가 이 모든 데이터에 라벨링을 해두어야함.
- 새로운 미래의 이메일에 대해 라벨을 예측
- Features: 스팸메일인지 아닌지 결정하는 특성
- 특정 단어: FREE
- 텍스트 패턴: $dd, CAPS
- 텍스트가 아닌 것: 발신자 정보
Others Examples
- Classification의 정의 : 입력 x가 주어졌을때, x에 대한 label(classes) y를 예측한다.
- Classification은 상업에서 중요한 기술이다.
- Example:(input, classes)
- OCR:(이미지, 단어)
- Medical diagnosis:(증상, 병명)
- Automatic essay grading:(문서, 성적)
- Fraud detection:(계정 활동, 사기 혹은 사기가 아님)
- Customer service email routing
- Computer aided diagnosis:
- 의료분야 Input 이미지, 영상 등으로 진단
- 이미지 인식
- 공장 자동화, 로봇 네비게이션, 얼굴인식, 모션인식, 자동 타겟 인식
- 음성 인식
- 화자 식별, 음성 인지
- 생체인식 분야
불변의 생체 특징
을 이용한 사람 식별- 정적 패턴: 지문, 홍채, 얼굴, 장문, DNA 등
- 동적패턴 : 서명, 성문, 타이핑 패턴
- 이런 생체인식 분야는 출입통제, 전자상거래 인증 등에 사용된다.
- 제스쳐 인식 분야
- 펜 컴퓨터에서 텍스트 편집
- 제스쳐 입력을 통한 제어
- 손의 모션으로 TV 컨트롤
- 수화 해석기
중요 개념
Data
- 스팸메일인지 아닌지에 대한 Labeling된 객체
- 이 데이터는 3가지로 나눠진다.
Training set
: 모델 만들 때 사용Held out set
: 여력이 있을때, 학습할때 만드는 모델에 추가적인 파라미터(hyperparameter)를 결정할 때 사용. Training set데이터 사용하기도함.Test set
:모델의 유용성 판단, 절대로 training set의 데이터 사용하면 안됨
Features
- 입력된 데이터 각 x를 잘 특성 지을 수 있는
속성-값
쌍 - 일반적으로 feature vector라고 표현한다.
Experimentation cycle
- training set에 대해 learn parameters(model probabilites)
hyperparameter
조정 : 추가적인 파라미터 결정에 사용- test set으로
Accuracy
계산 - 중요!:
test set의 데이터로 학습하면 절대로 안된다
Evaluation
- Accuracy: 정확하게 예측된 인스턴스의 비율
Overfitting and Generalization
- overfitting: 학습데이터에 모델이 너무 잘 맞는 경우.
overfitting된 경우, Generalization
이 떨어져 실 적용이 어렵다.
상대빈도(relative frequency)
파라미터를 사용하는 것은 과적합(overfitting)문제를 일으킨다.- 학습 사이클에서 (15,15) 픽셀이 3인 것이 없다고해도, test set에 없는것은 아니다.
- “minute”라는 단어가 나오면 100% 스팸메일이다.
- “seriously”라는 단어가 나오면 100% 스팸메일이 아니다.
상대빈도를 기반으로 모델을 만들면 training set에는 맞을 수도 있으나 현실에서는 적용되기 힘들다.
- 극단적으로, 이메일 전체를 하나의 특징으로 사용했다면
- training data는 완벽하겠지만
- generalize하지는 않을 것이다.
bag-of-words assumption
을 통해 문서 내의 단어의 빈도를 통해 문서를 특징짓는 것은 약간의 generalization을 주지만, 충분하지는 않다.
- 따라서 generalize를 위해서는
regularize
가 필요하다.- 일부로 틀린 데이터를 제공
Representative Models
학습 분류
-
지도 학습: labeling o
-
Classification:for 분류, 카테고리값
- Naive Bayes Classifier, DT, SVM, RF, KNN 등
-
Regression:for 특정 값 예측, 실제 value
- Linear Regression, Neural Network Regression, Support Vector Regression, DT regression, Lasso regression, Ridge regression 등
-
-
비지도 학습: labeling x
-
Clustering
- K-Means Clustering, DBSCAN 등
-
-
강화학습: 주어진 데이터에 대한 output 값 판단
-
Decision Making
- Q, R, TD Learning
-
알고리즘
Algorithms | Description |
---|---|
Naive-Bayes(NB) | 유사도화 선호도를 기반으로 사후확률 예측, 각 feature들이 독립적이라는 가정을 하는 Bayes 이론을 기반으로 한다. |
Bayesian Networks(BN) | 확률 값이 다른 확률의 input이 되는 인과관계 체이닝을 표현하는 모델 |
Multilayer Perceptron(MLP) | 두뇌 구조를 모방한 다층 퍼셉트론 |
Support Vector Machines(SVM) | 한 클래스의 데이터 점을 다른 클래스의 데이터 점과 가능한 한 가장 잘 구분해내는 초평면을 찾는 것입니다. |
Decision Trees(DT) | 트리구조를 기반으로한 모델로, 샘플 데이터를 특징에 따라 분류 |
Random Forests(RF) | DT의 성능을 개선, DT를 여러개 생성하는데, 랜덤하게 DT를 만들고 분류 결과가 DT보다 좋다. |
K-Nearest Neighbors(KNN) | 모델을 따로 만들지 않고, 미래 데이터를 학습 데이터 중 가장 가까운 K개의 학습데이터 label을 보고 미래 데이터를 labeling |
Overview
- 16 * 16 pixel의 그림이 있다.
- 각 좌표에는 ink가 있냐 없냐로 값이 있으며, 256길이의 벡터에 0 또는 1 값이 들어간다.
- 256개의 값을 기반으로 0부터 9까지 y1, y2 … y10에 매핑하는 함수
f
가 필요한데, 이 함수 f가deep learning에서 neural network
로 표현된다.
Neural network
신경망의 정의
뉴런
- Dendrite: 이웃 뉴련에서 전기 신호를 받는다.
- Synapse : 다른 뉴런과 dendrite의 연결 부위에 있고, 전기신호 세기 조정
- Axon : soma의 전위가 일정 이상이 되면, 이웃 뉴런에 전기 신호를 보낸다.
- cell body : dendrite로부터 받은 여러 전기신호를 합친다.
역할
- node 1개
- 다른 neuron들로부터 input을 받는데, 이들의 가중치 weight은 synapse에 의해 결정된다.
- 이 값들의 합이 soma에 누적되다가, 일정 이상이 되면 Axon이 이웃 뉴런에 전기 신호를 보낸다.
- 결국, 이걸 2차원 평면으로 나타내면 아래와 같은 그림이 된다.
- 함수의 값이 0보다 크면 직선 위에 있으므로, y = 1, 아니면 0으로 출력한다.
신경망에서 뉴런
- 결국, 신경망에서 여러 뉴런을 사용하고, 여러 층을 사용하게된다.
- 기하학적으로 여러개의 신경망이 의미하는 바를 표현하면 아래와 같다.
심층 신경망
- 사진으로 고양이가 있는지 없는지 확인
학습 알고리즘
학습의 정의
- 입력에 대한 올바른 출력값을 위한 가중치를 잘 결정하는 것을 의미.
- 각 입력에 대한 출력값을 확인하고, 출력이 올바르게 되도록 가중치를 계속 바꾸는 것이 학습
가중치를 어떻게 바꿀 것인가
- 어떻게 바꾸는 것이 가장 좋은가가 핵심
- Loss를 줄이는 방향으로 한다.
-
X가 가중치, Y가 에러값이라고 생각했을때, 위의 에러 함수의 가장 낮은 값이 위치하는 것이 Loss가 가장 작은 것.
- 하지만, 이 함수에서 가장 낮은 에러함수의 값을 찾는 것이 어렵기 때문에
gradient
방법을 사용한다. 현재 point를 미분해서 gradient를 구하고, 학습률(learning rate)만큼 구한다.
linear classifiers
- Input x에 대한 feature value와
- 각 feature의 가중치 weight을 모두 더한다.
- 이렇게 가중합하여 activation을 구한다.
- 가중합한 activation이 양수인지 아닌지에 따라 output이 결정된다.
- 로지스틱 회귀와 완전히 동일한 역할을 한다.
weights
- binary case: 스팸메일인지 아닌지 확인하는 케이스라고 가정한다.
- w는 기존에 있던 데이터이다.
- 새로운 데이터 x1을 함수 f에 넣었을때, 그 결과를 w와 내적한다.
- 내적해 두 벡터(w와 f(x1)) 사이 각도를 구해 90도 미만이면 양의 값으로 같은 클래스로, 90도가 넘어가면 다른 클래스로 분류한다.
Binary Decision Rule
- 데이터를 각 point이다.
- 초평면, hyperplane에서 한쪽 면은 +1, 다른 면은 -1에 대응된다.
- 가령, weight의 feature가 free와 money라고하면 1차원 방정식이 생성되는데, 이 위를 +, 아래를 -라고한다.
Binary Perceptron학습
- 가중치 weight은 0부터 시작한다.
-
각 학습데이터마다 아래의 시퀀스를 반복한다.
- 현재 weight으로 학습데이터를 분류한다.
- 만약 2-1의 분류결과가 맞다면(
w * f(x) >= 0
), weight의 변화는 없다. - 만약 2-1의 분류결과가 틀리다면(
w * f(x) < 0
), weight벡터를 조정한다. - 사전에 지정된 feature vector를 더하거나 빼서결정 경계로 이동하도록
weight vector를 조정한다. - 여기서 만약
y*
(새로운 데이터의 y값)이 음수라면기존 f와 dot product(내적)
한 값을 w에 반영한다.
- 위 그림에서, w의 결정경계는 초록색 면이다.
- y* f
를 w에 반영하면 보라색 선으로 바뀌고, 결정경계도 가중치 벡터의 수직으로 바뀌게된다.
Multiclass Decision Rule
- weight이 binary가 아닌 3개 이상의 값을 가질 수 있을 때,
- 각 class별 weight vector를 𝓌𝓎라고 하자.
- 𝓎 class의
score(activation)
은𝓌𝓎 ﹒𝑓(𝔁)
이다.
-
이 activation이 가장 큰 값이 나오는 지점에서의 𝓎가 해당 가중치 𝓌𝓎의 정답 벡터
가 된다.내적이 큰 값을 가질수록, 벡터 사이의 각도가 작다는 의미
이므로, class y가 해당 데이터의 분류가 된다.
-
𝓌가 3개라고 가정했을때, 이 3개의 가중치는 평면을 아래와 같이 3개의 결정 경계면,
decision boundary
로 나뉘게된다.
노란 영역에 있는 어느 벡터도 𝓌 ₁에 내적했을때 가장 큰 값을 가지게 될 것이다.
- 즉, 𝓌 ₁과 같은 방향을 가리키고 있다는 것을 의미한다.
Multiclass Perceptron 학습
- 모든 가중치 weight은 0으로 시작한다.
- 훈련 데이터를 1개씩 선택한다.
-
현재 weight을 통해 가장 큰 값을 가지는 y를 찾는다.
- 만약 y가 정답이면 변화는 없다.
- 만약 오답이면, 가중치 벡터들의 값을 조정한다.
-
오답의 score는 낮춘다.
- 정답의 score(activation)는 높이는 보정을 가한다.
Perceptron Algorithm
훈련 데이터 i
의 현재 output(o
)와 target output(t
)의 E(differences
)를 최소화하는 weight을 찾는다.- 차이의 제곱을 통해 희석을 방지하고, 미분을 위해 1/2를 곱한다.
- 경사하강법,
Gradient descent
를 사용해 가중치를 조정해나간다. - 이 값은
𝟃𝐸/𝟃𝓌 𝑖𝑗
를 조금씩 더해간다.
sequences
𝓌 𝑖𝑗
를 랜덤하게 설정한다.- t시점의 가중치와 t+1시점의 가중치가 동일할때까지 반복한다.
- 학습 데이터 p 패턴을 선택한다.
- 입력의 가중합을 계산해 output을 얻는다.
- t + 1 시점의 가중치는 위의 경사하강법을 적용해
학습률 η
를 곱한 값을 빼서 조정한다. - weight이 바뀌지 않거나, 최대 반복수에 도달할때까지 반복한다.
Perceptron의 특성
Separability
분리 가능성
- 학습 데이터에 대해서 완벽하게 올바른 파라미터(weight)가 존재한다.
Convergence
수렴성
- 학습이 separable하면 결국 perceptron은 수렴한다.
- 위의 경우에도 수렴한다고 할 수 있다.
Multi-layer Perceptron
2층 신경망
- 가중치 w의 층이 2개로 나뉘어 있어서 2-layer라고 한다.
- 앞쪽 3개의 node에서 각각 가중합해서 output을 계산한 것이 가장 오른쪽 노드의 input이 되어 다시 가중합되어 최종 결과가 연산된다.
- 일반적으로, 각 노드의 실제 output함수는 미분이 안돼서 보정이 불가하기때문에 아래와같은 s자 모양 함수를 사용한다.
계산식
-
Feedforward 신경망
이라고도 한다. -
신경망에 중간층이 최소 1개라도 존재하면 어떤 함수도 표현할 수 있다.
라는 이론적 검증이 되어있다. -
네트워크, 데이터 모델링, 분류, 예측, 이미지 및 데이터 압축과 패턴 인식에 굉장히 자주 사용된다.
Back Propagation 알고리즘
- 오늘날 사용되는 딥러닝은 모두 이 알고리즘을 사용한다.
- perceptron처럼 기본적으로 경사하강법(
gradient descent
)를 적용한다. - 단층 신경망에서는 input과 output의 차이 E를 쉽게 찾을 수 있지만, 다층 신경망에서는 hidden layer의 노드의 E를 찾을 방법이 필요하다.
𝟃𝐸/𝟃𝓌 𝑖𝑗
와 더불어𝟃𝐸/𝟃𝓌 𝑗𝑘
도 필요하다는 의미.
- 그래서,
output node의 E를 중간노드로 뒤로 전파(back propagation)
하는 방법으로 E를 중간노드에 반영하는 방법이 생겼다.
Sequences
- 𝓌 𝑖𝑗, 𝓌 𝑗𝑘를 랜덤 값으로 초기화한다.
- 모든 hidden layer에 대해
𝓌 𝑖𝑗, 𝓌 𝑗𝑘가 수렴하거나 원하는 성능이 나올때 까지 반복
- 훈련 데이터로부터 패턴 p를 선택한다.
- input으로부터 output을 계산한다.
- t+1시점 가중치 조정
𝓌 𝑖𝑗(t+1) = 𝓌 𝑖𝑗(t) - (-η)(𝟃𝐸/𝟃𝓌 𝑖𝑗))
𝓌 𝑗𝑘(t+1) = 𝓌 𝑗𝑘(t) - (-η)(𝟃𝐸/𝟃𝓌 𝑗𝑘))
N층 신경망
- back propagation을 사용한 n층의 신경망을 만들 수 있다.
OCR 처리 예시
- 신경망은 원시데이터를 통해 모델링할 필요는 없다.
- 주어진 문제를 가장 잘 특정지을 수 있는 feature set이 있다면, 이를 사용하면된다.
- 신경망 방식
- 통계적 패턴분류 모델
- 특징을 미리 정의하는 feature engineering을 통해 확률적으로 분류한다.
- 학습데이터를 통해 확률 분포를 만들고 분류한다.
- 구조적 모형다음으로 사용됐다.
- 구조적 모형
- 인식패야하는 패턴의 구조적 관계를 규칙으로 모델링하고, 새로운 데이터를 분류한다.
- 인쇄체는 가능하나, 필기체에는 적용이 어렵다.
댓글남기기