일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- codingtest
- Tensor
- SGD
- 프로그래머스
- selenium
- 백준
- Python
- 웹크롤링
- TF-IDF
- 추천 시스템
- 부스트캠프
- 시각화
- 협업 필터링
- Cosine-similarity
- Overfitting
- coursera
- wordcloud
- 딥러닝
- 파이썬
- 코테
- 데이터 엔지니어링
- 코딩테스트
- 알고리즘
- pytorch
- 추천시스템
- 데이터
- recommendation system
- 머신러닝
- 분산 시스템
- 웹스크래핑
- Today
- Total
개발자식
[딥러닝] 신경망, activation function, loss function 본문
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가지 활성화 함수
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 |