[3주차] 딥러닝 기초 및 정리[Linear, Logistic, softmax Regression/activation func/NN&MLP]
prefer_all2022. 10. 5. 12:55
딥러닝의 핵심 요소
- The data that the model can learn from
- The model how to transform the data
- The loss function that quantifies the badness of the model / proxy(근사치) of what we want to achieve
CE = Cross Entrophy/ 항상 이 경우에 이 loss func 사용해야하는 것은 아님. 왜 사용하고 이 loss가 줄어드는 것이 풀고자 하는 문제를 해결하는가 (학습하지 않은 데이터에서 잘 동작하는 게 중요한 것임)
- The algorithm to adjust the parameters to minimize the loss
<loss functions>
Linear Regression
- cost func : MSE (접선의 기울기를 이용해서 함수의 최솟값으로 점을 이동시키는 원리. 세타 <- 세타 - 세타 미분값 * learning rate) - optimizer: Gradient Descent
Logistic Classification
Binary Classification (2개의 선택지 중 1개 고르기) - activation func: sigmoid function
Softmax Classification
- Multi-Class Classification (3개 이상의 선택지 중 1개 고르기) - activation func: softmax function 선택지의 개수만큼의 차원을 가지는 벡터를 만들고, 벡터의 모든 원소의 합이 1이 되도록 원소의 값을 변환시키는 함수 - lost function : cross entropy
Linear Regression Cost FuncLogistic Regression Cost Func
내가 찾고 싶은 라벨이 10개면 10차원 vector가 나옴. 그 중 내가 생각하는 target(ex. 강아지)에 해당하는 dimension이 2다-> 개만 1이고 나머지는 0임. 사실 D가 하나만 1이고 나머지는 0인 것.
CE를 minimize한다 -> logit이라고 불리는 y hat. 내 뉴럴 네트워크 출력값 중 클래스에 해당하는 값만 높이겠다. 걔가 얼마나 높아지는 가보다 키운다는 게 핵심임.
D개의 라벨을 갖는 문제를 풀 때 output 중 가장 큰 값의 index를 고려하게 됨(높기만 하면 되지 얼마나 높은 지는 상관없음)
Probilistic Task: 내 모델 output이 단순 숫자가 아니라 확률적으로 하고 싶을 때
ex) 얼굴을 보고 몇 퍼센트 확률로 몇 살 같다
가우시안 log likelihood를 maximize하겠다
Q. Regression Task와 Classification Task의 차이 A. (1) Regression Task는 연속적인 값을 예측하고, Classification Task는 미리 정의된, 가능성 있는 여러 클래스 레이블 중 하나를 예측한다. (2) Regression Task는 loss function으로 MSE, RMSE, MAE을 사용하고, Classification Task는 Cross Entropy를 사용한다.(이진 분류에는 Binary Cross-entorpy, 멀티클래스 분류에는 Categorical cross-entropy)
Q. Entropy와 Cross Entropy의 차이 A. Entropy는 평균 정보량으로 분포의 평균적인 불확실성을 나타내는 값이다.
Entropy 값이 클수록 예측이 더 어렵다.
Cross Entropy는 Entropy와 식이 유사해보이지만 p(xi)가 q(xi)로 바뀐 것을 확인할 수 있다. 즉, 분포 q의 관점에서 본 분포 p의 정보량의 평균값이라고 볼 수 있다.두 분포가 비슷할 수록 작은 값을 갖는다.
모델 파라미터가 세타 일때, 모델이 표현하는 확률분포 Q(y| X, θ), 데이터의 실제 분포를 P(y|X_라고 하면 cross entropy는
Q. 흔히 classification task에서는 cross-entropy를 목적식으로 활용합니다. 후에 다른 강의들에서는 KL-divergence loss 등을 확인할 수 있을텐데요.
KL-divergence는 확률분포 사이의 차이를 비교할 때 사용하는 방법 중의 하나입니다. 가령, 확률 분포 P를 모델링하여 확률 분포 Q를 얻었을 때, 모델링한 Q가 원래의 P와 얼마나 차이가 나는 지 확인할 때 사용합니다.
이 때, 주어진 확률분포 P, Q 에 대하여, cross-entropy H(P,Q) 수식을 entropy H(X) 와 KL-divergence KL (X|Y) 로 표현할 수 있는데요. 수식이 아래와 같을 때, cross-entropy와 KL-divergence의 관계를 올바르게 표현한 것은 어떤 것일까요? A. H(P,Q) = H(P) + KL(P||Q)
Sigmoid, tanh에 비해 Gradient가 출력층과 멀리 있는 Layer까지 전달할 수 있다.Sigmoid, tanh의 경우, x값이 매우 크거나 작을 때, 미분값이 0에 가까워집니다. 따라서 gradient vanishing에 취약하지만, relu의 경우, x값이 커져도 미분값이 1로 유지되기 때문에 gradient가 출력층과 멀리 있는 Layer까지 전달될 수 있습니다.
특정 범위에서 neuron 이 죽게 된다
ReLU activation은 x = 0인 점에서 미분 불가능합니다. Backpropagation을 위해, x = 0인 점에서 특히 1로 정의하여 활용하기도 합니다.
선형이 아닌 비선형
양 극단값이 포화되지 않음
NN(Neural Network) & MLP(Multi Layer Perceptron)
뇌를 닮아서 능력이 좋은 건 아니다
Non linear transform을 중간에 하는 이유: 다양하게 표현 가능
(ReLU, Sigmoid, Hyperbolic Tangent 등 다양한 acitvation function)
There is a single hidden layer feedforward network that approximates any measurable function to any desired degree of accuracy on some compact set K
(최적화 하는 네트워크가 어딘가에 존재한다는 거지 내가 만든 게 최적화한다는 뜻은 아님)
2012 AlexNet
딥러닝이 실제적으로 성능을 발휘하기 시작
2013 DQN
이세돌 vs 알파고. 알파고를 만든 강화학습
Q learning이라는 강화학습을 딥러닝과 접목
2014 Encoder / Decoder
단어의 sequence를 어떤 vector로 encode하고 다른 언어의 sequence로 바꿔줌
기계어 번역 트렌드가 바뀜
2014 Adam Optimizer
Hyper parameter에 따라 성능 결과가 달라지는데 이러려면 computing resource가 많이 필요함. 그런데 adam은 웬만하면 잘 됨
2015 GAN
이미지를 어떻게 만들어낼 수 있을지에 대한 이야기
2015 ResNet
이 논문 덕에 딥러닝이 딥러닝이 가능해짐(네트워크를 깊게 쌓기 때문에)
shallow network가 아닌 neural network를 사용. 이전엔 너무 깊게 쌓으면 test data 에서 성능이 안나온다고 생각했으나
트렌드가 바뀜.
2017 Transformer (Attention Is All You Need)
mha 구조를 이해하는 건 중요- recurrent neural network와 같은 다른 방법에 비해 어떤 장점이 있고 왜 좋은 성능을 내는가
2018 BERT
Transformer을 사용하는데 bi direction encoder을 사용
NLP는 주로 Language learning model을 학습함 (다음에 어떤 단어가 나올 지 맞춤)
Fined tune NLP model : 다양한 말뭉치를 통해 pre-train. 소수의 network에 fine tuning
2019 BIG language Models
많은 parameter
2020 Self Supervised Learning
분류 문제에서 학습 데이터는 한정적.
학습 데이터 외의 un label 데이터 사용하겠다
visual representation : 어떻게 이미지를 컴퓨터가 잘 이해할 수 있는 벡터로 바꿀 지