본문 바로가기

CNN 개념정리

CNN 전체 학습과정

머신러닝, 딥러닝 : 적절한 예측을 도출해내는 최적의 함수 찾기

= 가중치 update하여 학습 진행

 

AlexNet(12) => VGG(14) => GoogLeNet(14) => ResNet(15)

 

딥러닝은 매우 유연하고 확장성 있는 모델을 구성함

+ feature extractor까지 스스로 진행

=> 다양한 영역 (영상, 음성, 자연어 등등)의 최적화 문제 해결책 제시

물론 그만큼 많은 컴퓨팅 연산 필요 : GPU

 

딥러닝 전체 개요

1) 입력된 데이터와 초기 가중치 값들을 가지고 weighted sum + activation function 적용하여 예측값 도출

2) 도출된 예측값, 실제값의 차이를 계산 (: loss func)하여 이를 줄이는 방향(: weight 값 조절 => GD 사용)으로 학습 재진행

 

-weighted sum

Activation Function

활성화 함수 : acivation function

: 딥러닝 네트워크에 비선형성 적용 => 좀 더 복잡한 함수들을 근사할 수 있도록 해줌

sigmoid hyperbolic tangent recified linear unit : ReLU
이진 분류 마지막에 사용   은닉층에 사용 //다양한 변형 존재
-입력값이 클 때 Gd 변화가 거의 없어 학습이 안됨
-평균이 0이 아님 => zigzag로 수렴
-평균은 0이지만 sigmoid와 마찬가지로 값이 커질때 학습률 변화가 없음 0보다 클때 입력값 그대로 출력

+softmax : 멀티 분류 시 마지막 classification 출력층에 사용

=> classification 중 binary : sigmoid(0/1로 출력) & multi : softmax(각 label의 확률값합 1로 출력)로 사용됨

 

loss function

손실함수 : loss function

(비용함수 / 목적함수)

: 네트워크 모델이 얼마나 적절하게 학습이 되고있는지의 지표

-RSS(residual sum of square) => MSE(mean square error)  //주로 회귀모델서 사용

-crossentropy //classification에서 사용 //분류에서 주로 사용

multi class => categorical crossentropy + softmax(실제 클래스 값에 해당하는 결과값에만 loss 부여 + 아주 잘못된 예측에는 매우 높은 loss 부여)

binary => binary crossentropy + sigmoid 

 

 

Gradient Descent

경사하강법 : gradient descent

: 딥러닝의 뼈대

도출한 loss 함수 값이 줄어드는 방향으로 weight를 조절하여 학습 진행

=> how?

미분 사용 : 미분 => 값들의 방향성을 알 수 있음

각각의 가중치들을 편미분하여 학습률(learning rate)을 곱하여 가중치와 절편 조절

 

GD의 종류

Gradient Descent Stocastic Gradient Descent mini-batch Gradient Descent
컴퓨팅 연산 과부화 한 건만 가지고 GD 적용 mini-batch크기만큼 GD 적용

: 일반적으로 mini-batch가 대부분의 딥러닝 framework에서 채택됨

 

-우리가 학습하면서 주의해야하는 것

더보기

-learning rate 크기

-전역 최소점(global minimun) != 국소 최소점(local minimum)

 

Back propagation

오차 역전파: back propagation

퍼셉트론보다 복잡한 심층 신경망들이 적용되면서 단순 미분으로 계산하기 힘들어짐

 

-feed forward

-backpropagation 수행하여 출력층부터 역순으로 weight update

 

upstream gradient와 local gradient 적용하여 gradient 구할 수 있음

Optimizer

optimizer : 최적화 기법들

보다 최적으로 GD 적용 + 최소 loss로 보다 빠르고 안정적으로 수렴할 수 있는 기법 적용

//like 자동차의 기어를 바꾸고 엑셀 강도 조절을 통해 눈밭에 겉도는 자동차 바퀴 빼는 방법이랄까

-momentum //gradient 값 보정 

: 관성

//이전 gradient 값들을 일정 수준 반영하며 신규 가중치로 update

지그재그로 수렴하는 것을 일정 수준 개선할 수 있음

 

-Adeptive Gradient : AdepGrad //learning rate 개선

가중치 별 다른 학습률을 동적으로 적용

iteration 시마다 개별 가중치 별 적요된 gradient 제곱값을 더해 새롭게 learning rate 적용

학습 반복하며 학습률이 너무 작아짐

 

-RMSProp : AdepGrad의 문제점 개선

gradient값을 제곱으로 더하지 않고 지수가중평균법을 적용하여 learning rate 조절

 

-Adam (Adeptive Moment Estimation)

학습률과 gradient descent 값 둘 다 조절

 


numpy는 cpu의 SIMD를 사용하여 빠른 연산이 가능했음

그런데 딥러닝으로 오니 SIMD도 부족하여 GPU 사용 시작

 

 

CNN

feature extractor + classifier과정

=> classifier에 맞는 최적의 feature를 추출하게됨

이때 최적의 feature 추출을 위해 최적의 weight값을 찾게됨

=> 최적의 feature 도출을 위해 적절한 필터들을 적용하므로 여기서는 최적의 필터 weight 값을 찾아내게됨

'CNN 개념정리' 카테고리의 다른 글

Gradient Descent, Back Propagation  (0) 2023.08.20
[섹션 9]  (0) 2023.07.15
[섹션 7]  (0) 2023.07.11
섹션 5  (0) 2023.07.05
섹션 1  (0) 2023.07.01