딥러닝의 구성요소
- Train
- Test
딥러닝
- McClulloch 교수 and Pitts 교수
퍼셉트론 구조 - Rosenblatt
ADALINE - Adaptive Linear element
ㄴ 직선에서 얼마나 멀리 떨어져 있느냐에 따라 뭐가 달라짐
XOR 문제?
ㄴ 다층 퍼셉트론으로 해결
오류 역전파 알고리즘 ( Backropagation Algorithm; BP)
- MLP 와 BP 알고리즘으로 해결한 MNIST 문제
기울기 소실 문제 ( 두 번째 AI winter)…
- 계층이 깊어질 수록 학습이 어려움
심층 믿음 신경망의 등장(Deep Belief Network. By Hinton)
ImageNet Large Scale Visual Recognition Challenges
딥러닝 프레임워크
- Keras
- Caffe
- Theano
- 최초의 딥러닝 라이브러리 중 하나
- 저수준 라이브러리
- 확장성은 떨어지는 편, 다중 GPU 지원이 부족
- 초창기 Keras의 백엔드로 사용된
- MatConvNet
- MATLAB 기반의 딥러닝 프레임워크
- MATLAB에서 GPU를 사용한 CNN구현으로 인기
- MATLAB 자체 딥러닝 라이브러리가 제공되면서 개발 중단
TensorFlow
- 구글에서 꾸준히 개발/배포하는 오픈 소스 프레임워크
- 2.0 알파 버전이 미리 공개되어 개발자들이 테스트해볼 수 있음
- 학계는 물론, 산업계에서도 가장 많이 사랑받는 프레임워크
perceptron
- 신경 세포를 이진 출력의 단순 논리 게이트로 해석하여 고안.
업데이트 후 가중치 = 업데이트 전 가중치 + 학습률(학습 데이터 정답 - 입력으로 추정한 출력)입력 데이터
퍼셉트론의 학습
initialize_w(random)
for _ in range(max_iter):
for x, y in zip (X, Y):
h = dot_product(x, w)
y_ = activation_func(h)
w = w + eta * ( y - y_) * x
1. 임의로 선을 긋는다.
2. 입력을 하나씩 넣어서 출력을 내본다.
3. 정답과 비교해서 틀린 경우 선을 옮겨 다시 긋는다.
## 활성함수
- 퍼셉트론의 출력에 의미를 부여해주며, 일반적으로 비선형 함수이다.
Sign 함수의 문제점
- 결정 경계로부터 거리를 신경 쓰지 않고, decision boundary를 결정
Tanh와 soft decision
tanh(x) = ( exp(x) - exp(-x) ) / ( exp(x) + exp(-x) )\
- - 값이 작아질 수록 -1, 커질 수록 1에 수렴
- - 모든 실수 입력 값에 대해 출력이 정의
- - 출력이 실수값으로, soft decision
- - 입력 값이 0에 가까울수록 출력이 빠르게 변함
- - 모든 점에서 미분 가능
sigmoid function
sigmoid(x) = 1 / (1 + exp(-x) )
- - 값이 작아질수록 0, 커질 수록 1
- - 모든 실수 입력 값에 대해 출력이 정의
- - 출력이 0~1 사이로, '확률'을 표현할 수 있음
- - binary classification에서 확률을 표현할 때 많이 쓰임
- - 입력 값이 0에 가까울수록 출력이 빠르게 변함
- - 모든 점에서 미분 가능
- - sigmoid 함수는 본래 S-Shape의 함수 모두를 가르키나, 딥러닝에서는 보통 위 함수로 통용!
softmax function
softmax(x) = exp(x) / sigma(exp(x))
- - 각 입력의 지수함수를 정규화
- - 각 출력은 [0, 1]의 값을 가짐
- - 모든 출력의 합이 반드시 1
- - 여러 경우의 수 중 한가지에 속할 '확률'을 표현
================================
ReLU function ( Rectified linear unit func)
ReLU(x) = max(0, x)
- - 0보다 작은 값을 0으로 강제하는 합수
- - 딥러닝에서 가장 많이 사용되는 활성 함수
- - 미분 값이 일정 ( 0 또는 1 ) 해서 학습이 잘 되는 특성
- - 단순한 구현으로 매우 빠른 연산이 가능
- - ReLU는 현재 쓰임을 자세히 알긴 어려우나, 지속적으로 다루어짐
손실 함수 ( Loss function )
- 최적화 이론에서 최소화 하고자 하는 함수
- 알고리즘 학습 중 아직 '얼마나 못 하는지'를 표현
- 보통 미분 가능한 함수를 사용
- 목적 함수, 비용 함수, 에너지 함수 등으로 불림
- 학습 과정에서 중요한 역할을 함
성능 척도 ( Performance measure )
- 학습된 알고리즘의 성능을 측정하는 지표
- 정량적으로 **알고리즘을 비교/평가**하기 위함
- 미분 가능 여부에 관계 없이 사용
- 학습 과정에서는 사용되지 않음
- '비즈니스 목표'와 연관이 높음
==================
알고리즘 학습의 수학적 의미
theta' = argmin(L(x, y; theta)
- L : 손실 함수
- x : 학습 데이터 입력
- y : 학습 데이터 정답
- theta : 학습될 모든 파라미터를 모은 벡터
- theta' : 추정된 최적의 파라미터
===================
Loss function의 예시.
평균제곱오차 (mean squared error; MSE)
E = 1/2 * sigma(y - y')^2
y i = 학습 데이터 정답의 i번째 요소
y' i = 학습 데이터 입력으로 추정한 출력의 i번째 요소
- 가장 기본적인 손실함수. 오차가 커질수록 손실함수가 빠르게 증가
- 회귀에 많이 쓰인다.
==============================
평균절대오차 ( Mean absolute error; MAE )
E = sigma(|y - y'|)
- 오차가 커져도 손실함수가 일정하게 증가하는 특징
- Outlier에 robust한 특징이 있다.
- 통계적으로 중간값(Median)과 연관이 있다.
- 회귀(Regression)에 많이 쓰임
================================
multiclass 구분하기 위한 손실함수
cf) one-hot encoding
- 다중 클래스 분류 문제의 정답을 표기할 때 사용
- 정답 벡터의 각 index 별로 class를 미리 정의, 정답에 해당하는 요소만 1로 표현.
- 이러한 정답 벡터를 **Label** 이라고 함.
교차 엔트로피 오차(cross entropy error; CEE)
E = - sigma(ylogy')
- one-hot encoding으로 인해, 정답인 클래스에 대해서만 오차를 계산
- 정확히 맞추면 오차가 0, 틀릴수로 오차가 무한히 증가.
- 오차를 내는 과정에서는 정답 클래스만 비교하지만, 다중 클래스 분류의 활성함수인 Softmax로 인해 다른 클래스에 대한 학습에도 영향을 준다.
# 신경망 구조
Neuron
- 입력
- 가중치와 편향
- 활성 함수
- 출력
신경망을 표현할 때, Graph의 Node와 Edge를 이용해 표현한다. 여기서 **node는 단일 뉴런 연산**, **Edge는 뉴런의 연결성**을 의미
====================================
Fully-Connected Layer ( = Dense Layer)
- 두 계층 간의 모든 뉴런이 연결되어 있는 계층
Shallow Newral Network
< 입력 - 은닉 - 출력 > 으로 이루어진 신경망
- DNN(Deep neural network)의 등장 이후 기존의 신경망을 SNN이라고 부름
- 각 계층은 Fully-connected layer으로 이루어져 있음
은닉 계층에서 주로 activate function으로 SIGMOID, tanh를 사용
출력 계층에서는 주로 어떤 동작을 원하느냐에 따라서 다른데,
regression : linear를 출력
multiclass classification : softmax
binary classification : sigmoid
심층 신경망(Deep Neural Network; DNN)
- 얕은 신경망보다 은닉 계층이 많은 신경망
- 보통 5개 이상의 은닉 계층이 있는 경우 'deep'하다 라고 표현
'정리 > Machine Learning' 카테고리의 다른 글
[kaggle - Google Brain - Ventilator Pressure Prediction] 2. data preprocess ~ define architecture ( LSTM ) (0) | 2021.11.08 |
---|---|
[kaggle - Google Brain - Ventilator Pressure Prediction] 1. Data load ~ EDA (0) | 2021.11.08 |
[Deep Learning] Deep Learning 주요 순서 정리 (0) | 2021.11.05 |
[머신러닝 모델] Decision Tree (0) | 2021.08.31 |
[머신러닝] 분류모델 평가지표(Evaluation Metrics for Machine Learning Models) (0) | 2021.08.30 |