Deep learning - ANN / CNN
Deep learning은 ANN(Artificial Neural Network)를 기초로 하고 있다.
퍼셉트론에서 특정 임계치를 넘어야 신경이 전달되는 것을 Sigmoid function을 이용하여, weight을 업데이트 시켜 각 노드의 최적의 weight을 찾는 방식으로 작동 된다.
ANN(Artificial Neural Network)
ANN 문제점
- 학습과정에서 최적의 파라미터를 찾기 어렵다
sigmoid 함수의 문제점 때문 (local minima를 global minimum으로 인식)
- Overfitting 문제
- 학습 시간이 너무 느리다
은닉층 증가될 수록 연산량 급격히 증가
ANN 문제 개선
- overfitting -> initialize point algorithm (pre-training을 통해)
- local minima -> ReLU, Drop-out 기법
- 느린 학습 시간 -> 그래픽 카드의 발전 (GPU, CUDA)
DNN(Deep Neural Network)
- 인공 신경망(ANN)의 은닉층이 2개 이상
- 컴퓨터가 스스로 분류레이블을 만들어 내고, 공간 왜곡, 데이터를 구분짓는 과정을 반복하여 최적의 구분선을 도출
- 많은 데이터와 박복학습 필요
- Pre-training 기법과 Back-propagation을 통해 현재 최적의 학습방법으로 사용
- DNN 응용 알고리즘 - CNN / RNN / LSTM / GRU
CNN(Convolutional Neural Network)
- 사람의 시신경 구조 모방한 구조
- 시각 분야에 국한되지 않고 음성 인식, 자연어 처리 같은 다른 작업에도 많이 사용됨
- 데이터를 feature로 추출하여 이 feature들의 패턴을 파악하는 구조
- CNN algorithm- Convolution 과정과 Pooling 과정을 통해 진행된다.
(Covolution Layer와 Pooling Layer를 복합적으로 구성하여 알고리즘 만듦)
Covolution 과정
- 데이터 특징 추출하는 과정
- 데이터에 각 성분의 인접 성분들을 조사해 특징을 파악
- 여기서 도출된 장을 Convolution layer이라고 부른다.
- 즉, 이미지의 특정 부분을 추상화하여 특정 층으로 표현한다. (압축과정)
- 파라미터의 개수를 효과적으로 줄여준다
- Filter와 Activation Function으로 이루어져 있다
ㄴ Filter: feature이 데이터에 있는지 없는지 검출하는 함수이다. (데이터가 있으면 1, 없으면 0)
ㄴ Activation Function: feature의 유무를 수치화 하기 위해 비선형 값으로 바꿔주는 함수
ㄴ Filter의 과정을 통해 1과 0으로 분류된 데이터가 수치화 된다.
Pooling 과정
- Convolution 과정을 거친 layer의 사이즈를 줄여주는 과정
- 데이터 사이즈 줄이고, 노이즈 상쇄시키고, 미세한 부분에서 일관적인 feature 제공
- 이 과정을 Sub-sampling이라고 부르며 Max-pooling / Average-pooling / L2-norm pooling 방법이 있다
- 보통 Convolution 과정에서 만들어진 feature들의 가장 큰 값만 가져와 사이즈를 줄인다
출처: Hands-On Machine Learning with Scikit-Learn & Tensorflow