개발자식

[딥러닝] 신경망, activation function, loss function 본문

AI/Deep Learning

[딥러닝] 신경망, activation function, loss function

밍츠 2022. 10. 8. 19:22

AI vs Machine Learning vs Deep Learning

- AI(인공지능)은 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술이다.

- 머신러닝은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야이다.

- 딥러닝은 머신러닝 알고리즘 중에 인공 신경망을 기반으로 한 방법들을 통칭한 것이다.

+ 딥러닝의 등장으로 머신러닝의 실용성은 강화됐고, 인공지능의 영역은 확장됐다.

 

머신러닝 vs 딥러닝

- 머신러닝은 특징을 추출하는 부분과 분류를 하는 부분이 별개의 부분으로 동작한다.

- 딥러닝은 인공신경망으로 구성되며, 신경망을 구성할 때 특징 추출에 대한 부분과 분류에 대한 부분이 같이 하나의 모델로 표현된다.

 

생활 속 인공지능은 무엇이 있을까?

- 자율 주행 자동차, 스마트 스피커, 챗봇, 인공지능 로봇, 이미지 인식, 개인화 추천, 기계 번역 등이 있다.

 

인공지능이 적용된 분야가 많아지고 있고 무궁무진한 발전이 기대가 된다. 어디에서 더 발전하고 확장될지 궁금하다. 자율 주행 자동차가 가장 기대가 되긴 한다.

나는 여기서 추천에 가장 관심이 많다. 다른 인공지능과 달리 정답이 없어서 여러 가지로 고려해볼 수 있는 점이 흥미로우면서도 정답이 없어서 난해한 분야라고도 생각을 한다. 그래도 내가 관심 있는 도메인에서 일한다면 사용자로서 피드백할 수 있지 않을까?라는 기대가 된다.

 

이 글에서는 딥러닝에 관해서 작성할 것이다.

 

간단한 딥러닝 역사

- 2012 AlexNet

- 2013 DQN

- 2014 Encoder / Decoder, Adam Optimizer

- 2015 Generative Adversarial Network, Residual Networks

- 2017 Transfomer

- 2018 Bert

- 2019 BIG Language Models

- 2020 Self Supervised Learning

 

 

딥러닝을 하기 위한 중요한 요소는 다음과 같다.(포괄적으로)

- data

:데이터는 우리가 풀고자 하는 문제에 의존한다.

- model

:데이터에 맞는 적절한 모델을 학습시킨다.

- loss (function)

:모델의 badness를 수량화한다. 

- algorithm

:loss를 최소화하기 위해 고안한다.

 

Neural networks (신경망)

- 동물의 뇌를 구성하는 생물학적 신경망을 애매하게 영감 받아 모방한 시스템이다.

- 동물의 뇌와 비슷하게 구성했기 때문에 딥러닝이 잘 됐다 보다 수학적으로 분석하는 것이 좋은 접근방법인 것 같다.

neural networks are function approximators that stack affine transformations followed by nonlinear transformations

-> 연산이 반복해서 이루어졌다.

 

간단한 linear neural networks를 봐보자 (예시)

  • Data : 개의 x,y 순서쌍
  • Model:  -> 의 mapping을 찾게 해주는 식
  • Loss: (정답 - 추정치) 오차 제곱의 평균 (MSE)

- 우리는 loss 값을 최소화하는 w, b를 찾아야 한다.

-> 편미분으로 각각 찾는다. 그래서 loss가 작아지는 방향으로 w, b를 update 한다.

 

그래서 우리는 다차원 행렬을 input과 output으로 다룰 수 있고,

행렬 곱은 두 개의 벡터 space의 선형 변환이다.

 

좀 더 신경망을 깊게 쌓아보면

위 그림과 같은데 이는 단층 신경망과 다를 게 없다. 

-> 비선형 함수(activation function)를 넣어준다.

-> 활성화 함수를 넣으면 표현이 다양해진다.

 

활성화 함수 (activation function)

- 입력 신호의 총합을 출력 신호로 변환하는 함수

- 입력 신호의 총합이 활성화를 일으키는지 정하는 역할을 한다.

 

6가지 활성화 함수

출처 cs231n

 

1. Sigmoid

특징

- 출력 값을 0에서 1로 변경해준다.

- 가장 많이 사용되었던 활성화 함수이다.

 

단점

- saturation (포화 상태)

-> 신호의 총합이 크거나 작을 때 기울기가 0에 가까워지는 현상을 saturated라고 하고 이는 vanishing gradient문제를 야기한다.

- sigmoid outputs are not zero-centered

-> weigh의 gradient가 항상 positive or negative인 경우 비효율적으로 최적해를 탐색한다.

 

2. tanh

특징

- 출력 값은 -1에서 1로 변경해준다.

- zero-centered 하다 (sigmoid의 두 번째 문제 해결)

 

단점

- sigmoid와 동일하게 gradient가 죽는 구간이 있다.

 

3. ReLU

특징

- 양의 값에서는 saturated 되지 않는다.

- 계산 효율이 뛰어나다 (sigmoid/tanh 보다 훨씬 빠르다)

- 생물학적 타당성이 가장 높다고 한다.

 

단점

- non-zero centered 문제

- 음수 영역에서 saturated 문제

-> 초기화를 잘하고, learning rate를 너무 높게 하지 않는다.

 

4. leaky ReLU

특징

- ReLU와 유사하지만 음의 영역에서 0이 아니다.

- staturated 되지 않는다.

- 계산 효율적이고 빠르다.

- dead relu 현상 없어짐

 

(나머지 생략)

-> 실제로 가장 많이 쓰는 것은 ReLU이다. ReLU를 사용하려면 Dead ReLU에 빠지지 않게 learning rate를 잘 설정해야 한다.

이번에 loss function에 대해 알아보자

 

손실 함수(loss function)

- 머신러닝 혹은 딥러닝 모델의 출력 값과 사용자가 원하는 출력 값의 오차를 의미한다.

- 정답(y)과 예측(^y)을 입력으로 받아 실수 값 점수를 만드는데 점수가 높을수록 모델이 좋지 않은 것이다.

- 손실 함숫값이 최소화되도록 가중치와 편향을 찾는 것이 딥러닝 학습의 목표이다.

 

손실 함수의 종류

1. MSE

- 예측한 값과 실제 값 사이의 평균 제곱 오차

2. RMSE

- MSE에 루트를 씌운 것

 

Binary Crossentropy를 하기 전에 entropy와 crossentropy에 대해서 보면

 

Entropy

- 불확실성의 척도로 엔트로피가 높다는 것은 정보가 많고 확률이 낮다는 것이다.

- 불확실성은 어떤 데이터가 나올지 예측하기 어려운 경우라고 해석하면 직관적이다.

 

Cross-Entropy

- 예측 모형은 실제 분포인 q를 모르고 모델링하여 q분포를 예측하고자 하는 것이다.

- 두 확률 분포의 차이를 구하기 위해서 사용된다.

+ kullback-leibler divergence (kl divergence)는 서로 다른 두 분포의 차이를 측정하는데, 두 엔트로피 차이로 계산된다.

 

다시 본론으로 돌아와서

3. Binary Crossentropy

- 실제 레이블과 예측 레이블 간의 교차 엔트로피 손실을 계산한다. 

- 2개의 레이블 클래스가 있을 때 사용하면 좋다.

 

4. Categorical Crossentropy

- 레이블 클래스가 2개 초과일 경우 사용한다.

- One-hot encoding 된 형태로 제공될 때 사용 가능하다.

 

5. Sparse Crossentropy

- Categorical Crossentropy와 동일하게 멀티 클래스 분류에 사용한다.

- one hot encoding 상태 필요 없이 정수 인코딩 된 상태에서 수행 가능하다.

 

인공 신경망의 표현력

- 우리가 일반적으로 생각할 수 있는 대부분의 continuous 한 function들은 모두 표현할 수 있다.

- 표현력이 보이는 존재성만 보이며 내가 학습시킨 모델이 그렇지 않을 수 있다.

- 신경망은 계속 깊게 쌓을 수 있다.

 

 

다양한 모델과 optimization에 대해서는 아직 얘기하지 않았지만 딥러닝에 관해서 전반적인 흐름을 담아봤다.

 

'AI > Deep Learning' 카테고리의 다른 글

[딥러닝] CNN  (0) 2022.10.09
[딥러닝] 감성분석_BERT  (0) 2022.05.24
[딥러닝] 딥러닝 Summary  (0) 2022.05.01
[딥러닝] Batch Normalization  (0) 2022.05.01
[딥러닝] Avoiding Overfitting - Dropout  (0) 2022.05.01
Comments