카테고리 없음
LinearAlgebra, Statistics, ML,DL 기초개념 정리
oogieon_n_on
2023. 4. 23. 14:51
2023.04.23
2023.06.05 수정
선형대수
- norm
norm이란 벡터의 길이를 나타내는 표현, 2norm을 일반적으로 의미하고 제곱합의 squreroot를 취한 형태로 계산. optimization process에서는 주로, weight을 constraint하는 regularization term. 으로 사용, 최적화문제에서 벡터의 크기를 제한하는 역할을 함.
- linearly independent란?
선형독립이란, vectorspace V에 속한 원소 {v1,v2,…} 의 선형결합을 동일한 수의 스칼라와의 곱의 합 형태로 나타냈을때 각 원소의 결과값이 전부 0이 되도록 만족하는 경우가 오직 스칼라 람다값이 0인 경우만 존재할 경우, 벡터공간의 원소 v1,v2,..vn을 선형독립이라고 합니다.
여기서 vector space란, 벡터의 덧셈과 뺄셈, 그리고 스칼라와 벡터곱등의 연산이 정의되는 공간을 의미하며 8가지의 공리를 만족해야합니다. 이때 8가지 공리는 덧셈의 교환, 결합법칙 , 덧셈의 항등원과 역원의 존재, 그리고 스칼라곱과 관련된 성질 등이 있습니다. - basis와 dimension이란?
basis는 어떤 벡터공간내 모든 벡터를 선형결합하여 나타낼 수 있는 최소한의 벡터의 집합, 즉 벡터공간을 구성하는 기본원소를 나타냅니다. 이때 basis는 선형독립을 만족합니다. 구체적으로 basis는 어떤 벡터공간 v의 선형독립인 부분집합 b를 가정했을때, b의 원소 들의 선형결합으로 벡터공간 V를 span할수 있다면, 부분집합 b의 원소를 벡터공간 V의 기저라고 합니다. dimension은 이때 벡터공간 내의 basis의 수- 선형독립인 basis의 개수가 해당 벡터공간의 차원을 결정합니다. - span이란?
span은 벡터가 생성하는 subspace를 의미합니다. 이때 subspace는 어떤 벡터공간의 부분집합으로써 공간내의 임의의 벡터와 스칼라에 대해 각각 덧셈과 스칼라곱에 닫혀있는 성질을 만족하는 집합을 의미합니다. 즉, span은 어떤 벡터 공간내의 벡터들과 스칼라값의 선형결합으로 생성되는 모든 벡터들의 집합을 의미합니다. - Null Space란?
어떤 행렬 A에 대한 벡터 x의 선형결합을 가정할떄, Ax=0을 만족하는 x의 집합을 행렬A의 null space라고 합니다. 즉, 선형변환 후 벡터의 모든 요소가 0으로 매핑되는 벡터의 집합을 의미합니다. - column space란?
어떤 행렬 A의 열벡터의 집합이 span하는 공간을 의미합니다. 여기서 span이란 주어진 벡터의 선형결합으로 나타낼 수 있는 벡터의 집합이기 때문에 column space는 어떤 행렬A의 열벡터의 선형결합으로 나타낼 수 있는 벡터의 집합이라고 볼 수 도 있습니다. 비슷한 개념으로 row space가 있으며 이는 행벡터의 집합이 span하는 공간을 의미합니다. - Symmetric Matrix?
대칭행렬이란 어떤 정방행렬A를 가정했을때, 대각성분을 중심으로 대칭되는 요소값을 가지는 행렬을 의미합니다. 이때 대칭행렬은 스스로의 transpose와 동일한 행렬이 된다는 성질을 가집니다. - Positive-definite?
positive-definite란 한국어로는 양정치행렬로, 어떤 정방행렬A를 가정했을때 0이 아닌 임의 벡터x에 대해 작성한 이차형식의 스칼라값이 양수인 행렬을 의미합니다. 여기서 이차형식이란 여러개의 변수를 지닌 어떤 2차함수를 x^TAx의 꼴로 나타낸 것을 의미하고, 이때 행렬A의 요소는 함수 f(x)의 계수와 관련이 있습니다.
이외에도 행렬의 모든 leading principal minor의 determinant가 양수인지 여부를 체크하거나 행렬의 모든 eigen value가 양수인지를 체크하는 것등을 통해 양정치 행렬여부를 판단할 수 있습니다. - Rank?
rank는 행렬의 차원과 같은 개념으로 어떤 행렬A의 열벡터들 또는 행벡터들이 span하는 공간의 차원을 나타냅니다. 이때 열벡터가 span하는 차원이란 열벡터중 선형독립인 벡터의 개수를 의미합니다. 좀 더 자세히는, 열벡터들의 선형결합의 결과가 0임을 가정했을때 각 열벡터에 곱해진 스칼라값 람다가 0이 아닌 다른값이 존재할 수 없을 경우, 해당 열벡터들간에 선형독립을 만족하고 이 벡터들의 수가 행렬의 rank,즉 차원이 됩니다. - Determinent가 의미하는 바는?
행렬의 det는 해당행렬이 얼마나 벡터의 선형변환에 영향을 주는지를 나타낸 값입니다. 만약 Det가 0이라면, 해당행렬은 역행렬이 존재하지 않고 det의 절대값이 1이라면 선형변환을 통한 벡터의 길이가 보존됨을 의미합니다.
또한 det는 행렬의 Rank와도 밀접한 관계를 갖습니다. 만약 det가 0이라면 A의 랭크는 자신의 행과 열의 개수보다 작습니다. 만약 det가 0이 아니라면, A의 랭크는 행,열의 수와 같습니다. - Eigen Value란?
eigen value란 어떤 벡터x의 행렬A에 대한 선형변환을 수행했을때, 결과에 해당하는 벡터가 변형전 x와 비교했을때 방향이 변하지 않고 크기만 스칼라 람다만큼 변화하는 벡터를 eigen vector라고 하고 이때 변하는 스칼라 람다값을 egien value라고 합니다. - Eigen Vector는 왜 중요한가?
딥러닝과 머신러닝에서 어떤 쪽에 주로 사용되느냐의 관점에서 중요성을 판단한다면, eigen vector는 행렬과 관련된 연산과정에 다양하게 사용됩니다. 예를 들어 선형연립방정식 Ax=b를 푼다거나, PCA와 같은 차원축소기법에서 고차원 데이터를 저차원 공간으로 변환하기 위한 데이터의 주 성분을 찾는 과정에서도 이용이 됩니다. - SVD란 무엇이고 중요한 이유는?
singular vector decomposition의 약자로 임의의 행렬 A를 가정했을 때 이 행렬을 세 행렬의 곱으로 분해하는 기법입니다. 이떄 세 행렬은 각각 mm크기의 직교행렬, nn크기의 직교행렬, 그리고 mn크기의 대각행렬입니다. 여기서 mn크기의 대각행렬의 대각원소를 singular value, 특이값 이라고 부릅니다. 고유값 분해와 유사하게 고차원의 데이터에서 특징값을 추출하여 연산을 가볍게 하고 모델의 크기를 줄이고 학습효율을 늘릴 수 있습니다. - Jacobian Matrix란?
벡터함수의 각 변수에 대한 편미분 값을 모아서 표현한 행렬을 의미합니다. - PCA란?
principal component analysis의 줄임말로, 어떤 고차원의 데이터에 대해서 차원을 축소할때 주로 사용되는 기법입니다. 이때 차원을 축소하는 방식은 어떤 데이터의 분포에 대해서 해당 데이터를 가장 잘 설명하는 축을 찾고 그 축으로 각 데이터들을 정사영을 내림으로써 dim을 줄이는 방식입니다. 구체적으로는 분포의 covariance matrix의 eigen vector가 데이터의 주성분 벡터에 해당합니다.
구체적으로, 각 데이터 벡터의 평균벡터를 구한후 각 데이터 포인터에서 평균벡터를 빼주면 평균만큼 모든 데이터들이 평행이동하게됨. 평균을 0으로 만들어주는 이유는 공분산행렬의 연산의 용이성때문. 이제 평균이 0이되었으니 가장 데이터를 잘 설명하는 벡터u를 찾는다고 가정하면, 각 평해이동된 각 데이터 포인트에서 u벡터에 정사영을내린다. 이때, 정사영내린 거리를 오차라고 본다면 이거리의 제곱합의 평균(MSE)가 가장 작도록하는 u벡터가 해당 데이터분포를 가장 잘 설명하는 축이다. 그런데 이때 이 u에 해당하는 벡터가 계산을하면 해당데이터의 분산이 가장 큰 방향이고 그 다음으로 잘 설명하는 u2축이 u1과의 수직방향. 데이터의 분산을 최대화하는 주성분축을 찾는과정이 각 정사영내린 거리를 최소화하는것과 같기때문에, 최적화문제로 볼 수 있다.
확률통계
- Expectaions, Variance, Covariance
- E(X) = ∑xf(x)
- E(aX+b) = aE(X) + b
- E(X^2) = ∑x^2f(x)
- E(Y) = E(g(X) = ∑g(x)f(x)
- E(X + Y) = E(X) + E(Y)
- E(XY) = E(X)*E(Y) if X,Y is independent
- Var(X) = ∑(x-m)^2 * f(x) = E((X-m)^2) = E(X^2) - E(X)^2
- Var(aX+b) = a^2 * Var(X)
- SD(aX+b) = |a|* sqrt(VarX)
- Var(X + Y) = Var(X) + Var(Y) + 2Cov(X,Y) Var(X - Y) = Var(X) + Var(Y) - 2Cov(X,Y)
- if X,Y is independent, Cov(X,Y) = 0
- Cov(X,Y) = E[(X-m)(Y-m)] = E(XY) - E(X)*E(Y)
- Cov(aX+b, cX+d) = ac*Cov(X,Y)
- Corr(X,Y) = Cov(X,Y) / sqrt(Var(X)) * sqrt(Var(Y))
- Corr(aX+b, cX+d) = ac/|ac| * Corr(X,Y)
- E(X) = ∑xf(x)
- Pmf, Pdf, Cdf
- discrete variable : PMF = P(a≤X≤b) = ∑f(x)
- Cdf : P(X≤x) = ∑f(x)
- P(X<1) = Cdf(1) - Pmf(1)
- continous variable : Pdf = P(a≤X≤b) = integral(fx)
- Cdf : P(X≤x) = integral(f(x))
- P(X<1) = P(X≤1) / P(a≤X≤b) = P(a<X<b)
- in pdf, P(X=x) = 0 → need range!
- discrete variable : PMF = P(a≤X≤b) = ∑f(x)
- what is Likelihood?
ML의 관점에서 본다면, 특정데이터가 주어졌을떄, 해당 데이터가 어떠한 모델에 의해 제대로 설명되고 있을 가능도를 의미함. 데이터가 주어졌을때, 관측값이 해당 분포에 속할(해당분포로 부터 도출되었을) 가능성을 나타내는 말. 즉 어떤 주어진데이터를 가장 잘 표현하는 분포의 모수를 관측값을 통해 추정하는 것. - MLE?
동일한 분포에서 독립적으로 추출된 데이터를 가정했을때, 각 데이터 포인트의 확률밀도함수에 대한 기여도를 계산하여 이값을 전부 곱한 값, 즉, 전체 데이터 분포의 likelihood가 가장 커지는 방향으로 분포의 모수를 추정하는 방법. 직관적으로는, 어떤 분포인지 모르는 상황에서 분포로 부터 추출된 데이터의 모음이 있을떄, 해당 데이터들이 어느 분포로 부터 나왔을 가능성이 가장높은가? 를 추정하는 과정. 그림으로 생각해본다면, 어떤 1차원 축 위에 데이터들이 쭉 분포해 있을때, 다른 모수를 갖는 여러분포를 움직이고 어떤 데이터에 더 잘 맞는지를 찾아내는 과정이라고도 생각할 수 있음. - normal distriution?
정규분포 혹은 가우시안 분포라고도 하는데, 종모양을 가지고 있고 중심이 평균인 분포입니다. 뮤와 시그마라는 모수를 가집니다. - central Limit Theorem (중심극한정리) ?
모집단으로부터 랜덤샘플 여러개를 뽑아서 그 랜덤샘플들의 표본평균을 계산하면 이 값은 랜덤샘플의 크기가 충분히 클때, 근사적으로 가우시안 분포(정규분포)를 따르게됩니다. 이때 조건은 iid입니다. independently, identically distributed한 랜덤샘플들이어야 합니다. 특히 clt가 흥미로운 점은 각 샘플들이 따르는 분포가 어떻든 간에 iid하고 n이 충분히 크다면 무조건 가우시안을 따르게 된다는게 이 theroem의 핵심인 것 같습니다.
구체적으로는 평균이 mu이고 표준편차가 sigma인 임의의 모집단으로부터 크기가 n인 표본에서의 표본평균은 n이 충분히 클때, 근사적으로 평균이 mu이고 분산이 sigm^2/n인 정규분포를 따르게 됩니다. 이때 만약 모집단이 정규분포라면, 표본평균은 표본의 개수와 상관없이 항상 정규분포를 따르게 됩니다. - 큰수의 법칙이란?
표본의 크기가 커질수록 표본평균이 모평균에 가까워지는 현상을 말합니다. 통계학은 표본을 통해 모집단의 모수를 추정하는 학문이기 때문에 통계학에서 상당히 중요한 개념입니다 . 동전던지기를 예로 든다면, 동전을 10번던졌을때 앞면이 나오는 비율이 0.5에 가깝지 않더라도 1000번 10000번 점점 반복해서 던질수록 0.5에 가까워지게 됩니다. - Bayes’ rule ?
사후확률을 likelihood와 사전확률의 곱으로 표현한 것이 베이지안 룰입니다. P(B|A) = P(B)P(A|B) / P(A)
p(A and B) = P(A)P(B|A)의미?: 어떤 조건부 확률이 주어졌을때, 그 조건부확률의40% 아침이 흐린확률 P(A)지금 아침이 흐리다면, 오후에 비가올 확률은?
== P(B|A) = P(A|B) P(B) / P(A)
10 % 오후에 비가온 확률 P(B)
80%, 오후에 비가왔을때 아침에 흐렸을 확률 == P(A|B)
P(B and A) = P(B)P(A|B) - chain rule of probability
P(a,b,c) = P(a|b,c) * p(b|c) * p(c) - marginal, joint probability?
x,y가 이산형 변수일때, P(x,y)를 의미 즉 x 와 y가 동시에 발생할 확률. 그리고 이것을 알고있다면 각 변수에 대한 marignal 을 구할 수 있음. marginal은 결합확률에서 특정변수에 대한 가능한 모든 조합을 고려한 확률값. - independece
if : P(x,y|z) = P(x|z) * P(y|z) → x,y conditionally independent
if: P(x,y) = P(x)*P(y) → x,y independent - Marginal Distribution?
어떤 확률변수의 집합에서 일부 변수를 고정하고 나머지 변수의 분포를 구하는 것을 의미합니다. 예를들어 X,Y의 결합분포가 주어졌다면, X,Y각각의 marginal dist를 구할 수 있습니다.
이때 변수를 고정한다는 것은 예를들어 X의 margin을 구한다면 Y값의 여부에 관계없이 X의 모든 값을 합쳐주면 됩니다. 이것은 XY결합분포를 y에대해 적분하는 것과도 동일합니다. - Conditional Distribution?
특정사건이 있다고 가정했을때 해당사건이 발생할 확률. - Bias란 무엇인가?
측정값과 실제 label사이의 차이를 의미합니다. - Biased, Unbiased Estimation의 차이는?
biased estimation은 모수의 추정량의 기대값이 모수값과 일치하지 않는 - Bias, Variance, MSE란? 그리고 그들의 관계는?
모델이 단순할수록 bias는 높고 variance는 낮음 . 반면 복잡할수록 다양한 특성을 학습하지만 variance가 높아짐. 두 평가지표간의 trade off 가 있고 이것을 고려하여 적절한 타협점을 찾는것이 좋은 모델을 만드는 핵심. bias는 모델의 예측값과 실제값 사이의 차이이며 모델이 얼마나 정확한 예측을 하는지에 대한 편향정도. variance는 모델의 예측값이 훈련데이터에 대해 얼마나 변동하는지를 나타내는값으로 크다면 오버핏을 의심. MSE는 모델예측과 실제값사이의 오차제곱합의 평균으로 주로 회귀모델의 손실함수로 사용. - Sample Variance란 무엇인가
표본분산. - 표본분산을 구할때 N대신 N-1로 나눠주는 이유은 무엇인가?
표본분산을 불편추정량으로 만들어주기 위함입니다. 여기서 unbiased estiamtion이란, bias가 없는 추정량이고 bias는 기대값과 실제 모수와의 차이를 나타냅니다. 즉, 불편추정량은 표본을 통한 추정의 기대값이 모수와 동일한 추정량이라는 말입니다.
이것은 독립변수와 자유도의 개념을 통해서 이해할 수도 있습니다. 표본 분산을 구할시, 표본평균이 a라는 값으로 특정될 경우 표본분산의 n개의 변수중 n-1개의 값만 정해진다면 나머지 하나는 종속적으로 정해지게 됩니다. 즉, 표본분산은 표본평균이 정해질경우 독립변수가 n-1개인 식이되는것이죠. 따라서 표본분산의 자유도는 n-1이 됩니다. - Convariance, correlation 이란 무엇인가?
두개의 확률변수가 있을때, 두 확률변수 사이의 관계를 나타내는 통계량입니다. 공분산은 두 변수가 함께 변하는 정도를 나타냅니다. 서로 반대방향으로 변화한다면 음수, 독립적이라면 0이됩니다.
COV(X,Y) = E[(X-E(X)) * (Y-E(Y))]
COV(X,Y) = E(XY) - E(X)*E(Y)
Corr(X,Y) = Cov(X,Y) / sqrt(Var(X)) * sqrt(Var(Y)) - p-value란 무엇인가?
p-value는 유의확률을 의미하며 통계적 가설을 검정할때 사용되는 통계적 지표입니다. 구체적으로는 검정 통계량 값에 대해 귀무가설을 기각할수 있는 최소의 유의수준.을 의미합니다. 다시말하면, 귀무가설이 참일 확률이라고도 볼 수 있습니다.
통계적 가설을 검정할때, 유의확률과 유의수준의 비교를 통해 가설의 참거짓 여부를 판단하게 됩니다. 구체적으로는 유의수준에 해당하는 alpha값보다 p-value가 크다면 귀무가설을 채택하며 주장하고자 하는바가 아니라는 결론이 도출되고, 반대의 경우엔 귀무가설을 기각하며 주장하고자 하는바가 맞다는 결론이 도출됩니다.
여기서 유의수준은 1종오류를 범할 확률의 최대 허용한계를 의미합니다. 1종오류란, 실제 결과가 귀무가설을 채택했어야했음에도 (즉, 주장하는바가 틀렸음에도) 이를 기각할 오류를 의미합니다. 따라서 유의수준alpha과 유의확률p의 비교는 연구자의 주장이 틀렸음에도 맞다고 잘못판단할 오류를 허용하는 값(유의수준)보다 유의할 확률( p=vale)이 크냐 작냐를 판단하는 일이고 크다면 주장하는 바를 만족한다고 할 수 없음을, 반대로 작다면 주장하는 바를 유의하다고 판단하고 유의확률을 무시할 수 있음을 의미합니다. - confidence interval이란 무엇인가?
통계적 추정에서의 구간추정 방식으로 모수가 속할 것으로 기대되는 범위를 의미한다. - KL divergence ?
두 확률분포간의 차이를 측정하기 위한개념으로 이를 통해 두 확률분포가 얼마나 다른지를 나타냅니다. 두 분포가 완전 동일할경우 KLdivergence = 0 이고 크면 클수록 두 분포가 다릅니다.
ML / DL
기본 개념들 우선
최적화
- Gradient Descent란? (stochastic gradient descent? )
경사하강법은 머신러닝에서 손실함수의 최소값을 찾기 위한 과정에서 사용된 가장 기본적인 최적화 알고리즘입니다. 핵심적인 아이디어는 현재의 위치에서 cost func의 gradient를 계산하고 이 기울기가 가리키는 방향의 반대방향으로 learning rate만큼 이동하면서 함수의 최소값을 찾는것입니다.
손실함수의 최소값을 찾기위해 어느방향으로 얼마나 이동할 것인가.
방향? → 미분한 값이 가장 가파른 방향. 여러개의 변수 함수를 가정했을때 각 변수에 대해 편미분한 grad벡터가 있다면, 해당 벡터가 가리키는 방향이 함수f가 가장 가파르게 증가하는 방향. 따라서 해당 grad벡터가 가리키는 반대방향으로 이동하면서 손실함수에서의 최소값 가장 빠르게 찾아감.
경사하강법은 cost function이 convex(볼록)한 경우 global minima 에 잘 도달하지만, non-convex할경우 local minimum에 빠질 가능성이 있습니다. 따라서 초기값 설정을 다양하게 시도하거나, Adam같은 momentum을 적용한 최적화 알고리즘을 통해 보완하기도 합니다. saddle point문제 또한 존재, 기울기가 0인지점으로 GD알고리즘이 멈출 수 있음.
momentum은 이동에 일종의 관성을 추가해서 단순히 정해진 만큼 이동하는 것이 아니라 이전 기울기 벡터의 방향도 고려해서 이동하게됨.
Adam의 adaptive. 기울기의 제곱값을 사용. learning rate에 h + f’^2의 역수를 곱해서 기울기 값이 클수록 적게 이동하고 작을수록 확확이동하도록. 이떄 h를 decay(감쇠).
*stochastic gradient descent?
stochasitic은 미니배치에 대해 gradient를 계산해서 모델을 업데이트. 모델의 학습속도 향상, 데이터의 세트가 클 경우 유용.
* optimizer
- momentum은 이동에 일종의 관성을 추가해서 단순히 정해진 만큼 이동하는 것이 아니라 이전 기울기 벡터의 방향도 고려해서 이동하게됨. (지수 이동평균을 사용)
- Vdw = 가중평균
- VdW = beta(VdW) + (1-beta)dW
- (1-beta) 가속 : momentum
- w ← w - lr(Vdw)
- 적절한 beta값을 통해 ossilation을 줄이고 fast 수렴 to minimun
- learning rate = [1 / (1 + decay_rate) *epoch_num ] * learning_rate
- LearningRate : schedule을 부여할수도 있음. epoch가 반복될수록 보폭(lr)이 좁아지도록 lr에 epoch에 따른 scaling term을 추가하는 방식으로 작동.
- Learning rate decay? : 학습의 초기단계에는 큰폭으로, 수렴할수록 적은 보폭으로 이동하는것. 미니배치가 작을 수록 noise가 심하기 때문에 계속 똑같은 lr을 사용한다면 최소값에 가깝게 수렴하지 못하고 큰 격차로 주변을 맴돌게 될것. 만약 학습률을 업데이트에 따라 감소시킨다면, 최적값에 수렴 못하더라도 주변을 맴돌떄, 최소값과의 격차가 훨씬 줄어들것.
- RMS prop == adaptive
- 도함수(dw) 의 제곱을 가중평균으로 사용. 업데이트시 이 값을 dw에 루트값으로 나눠서 학습률과 곱하게됨
- 도함수(dw) 의 제곱을 가중평균으로 사용. 업데이트시 이 값을 dw에 루트값으로 나눠서 학습률과 곱하게됨
- Back Propagation?
신경망 모델의 학습알고리즘 중 하나로, 손실함수를 최소화하기 위해 forward과정에서 입력값이 각 레이어를 거치며 순차적으로 출력값이 도출되는 과정을 역으로 되돌아가며 각 layer의 가중치와 편향이 최종적인 손실값에 어떻게 영향을 미치는지를 계산해내는 과정입니다.
구체적으로는 손실함수에서부터 역으로 계산이 이뤄지기 때문에 손실함수를 weight와 bias로 편미분하는 것에서 시작해서 역순으로 각 layer별 weight와 bias에 대해 편미분 한 값을 구해냅니다. 이때 각 위치별로 손실함수값에 얼마나 영향을 미치는가를 알아보기 위해서는 chain rule을 이용해서 해당위치까지의 gradient값을 연속적으로 곱하는 것으로 각 위치별 손실갑셍 대한 영향력을 파악할 수 있습니다. 여기서 chain rule이란, 여러 입력이 있고 이 입력들이 여러 함수를 통과할 때, 입력단의 한 지점에 대한 출력의 변화량 을 의미합니다.
이렇게 구한 각 노드별 grad를 바탕으로 gradient descent를 통해 weight, bias 와 같은 학습가능한 파라미터들을 손실함수를 줄이는 최적의 방향으로 업데이트해가게 됩니다. - batch normalization?
배치놈은 인공신경망에서 학습의 속도를 개선하고 일반화의 성능을 향상시키 위한 기법중 하나입니다. 딥러닝 모델에서 batch단위로 학습을 하게되면 internal covariance shift문제가 발생할 수 있는데, 이는 학습과정에서 layer별로 입력값의 분포가 달라지게 되는 현상을 말합니다. 이때 각 layer의 활성화함수를 거친 값을 정규화(normalizae)하여 다른 분포의 입력에 대해서도 제대로된 학습이 이뤄지도록 하는 방식입니다. 이때 연산이 수행되는 방식은 각 층의 입력값에 대해 평균을 빼고 표준편차로 나누는 일반적인 정규화과정과 동일하고 정규화된 각 레이어의 분포는 모두 평균0- 분산1로 맞춰지게 됩니다. 이때의 평균과 분산은 학습시 데이터를 나누는 mini-batch단위로 계산이 됩니다.
정규화된 입력값은 업데이트가 가능한 파라미터로 정규화된 값에 대해 스케일링역할을 하는 파라미터 감마와 bias에 해당하는 베타값을 더하여 학습시 업데이트가 가능한 형태로 구현되게 됩니다. 학습의 단계에서는 각 layer의 activation function을 거치기 전에 적용되고, 각 배치별로 평균이 0분산이1인상태로 분포되게 되면 activation을 거쳤을때 전체 분포에서 음수에 해당하는 부분이 0이 되게 되어버려 정규화의 의미가 사라집니다. 따라서 학습가능한 파라미터인 감마와 Bias를 적용해서 기존의 음수부분이 모두 0이 되지 않도록 방지해주는 역할을 하고, 이 값은 학습을 통해 손실함수를 줄이는 것에 효율적인 결과를 내기 위한 값으로 업데이트됩니다.
또한 해당 알고리즘을 구현과정에서 사용할때 주의해야할 부분으로는 gradient가 update되는 학습과정과 학습된 모델을 사용하는 inference과정이 다르다는 것입니다. 학습단계와 다르게 테스트시에는 배치 단위로 평균과 분산을 구하는 것이 어렵기 때문에 학습단계에서 배치단위의 평균과 분산을 저장해놓고 테스트시에는 이 값을 고정값으로 적용해 forward되도록 구성합니다.
이때 사용하는 평균과 분산값은 학습과정에서 이동평균 또는 지수평균으로 계산한값으로, 이동평균은 학습때 최근 N개에 대한 평균값을 고정값으로 사용하고 지수평균은 전체 데이터의 평균값을 사용합니다.
*internal covariance shift?
딥러닝에서는 여러개의 layer를 쌓으면서 학습의 난이도가 증가. weight의 미세한 변화들이 가중되어 쌓이면서 hiddenlayer의 깊이가 깊어질수록 변화들이 누적되어 점점 커지고 이때문에 uppder layer로 갈수록 기존 hidden layer와는 다른 layer결과를 가지게됨. 이게 왜 문제냐면 각 layer에 입력되는 input feature가 조금씩 변하면서 여러층에 걸쳐 쌓이게되면 결국 뒤로 갈수록 전혀 다른 데이터를 받아들이게 되는 결과를 가져올 수 있음.
- 차원의 저주?
차원의 저주란 고정된 차원의 크기가 증가할 수록 필요한 데이터의 양이 기하급수적으로 증가하는 문제를 말합니다. 머신러닝에서 이 개념을 대입해보면 훈련세트의 차원이 커질 수록 해당 데이터에 적합시킬 모델을 위한 필요한 데이터의 양이 기하급수적으로 늘어나게 됩니다. 즉, 차원의 수가 많아 많은 변수들에대해 복잡한 관계를 모델링해야할 수록 학습에 사용되는 데이터는 한정되어있기때문에 과적합의 위험이 커지게 됩니다.
이런 문제를 해결하기 위해 주로 차원축소 기법을 많이 사용합니다. 대표적인 차원축소 기법으로는 PCA가 있고 여기서 PCA란 주성분 분석으로 어떤 데이터의 분포에서 그 데이터의 특성을 가장 잘 나타내는 축을 찾고 각 데이터포인트를 해당 축으로 정사영을 내림으로써 데이터의 dim을 줄이는 방식입니다. 이때 주성분 벡터는 분포의 covariance matirx의 고유값분해를 통해 얻어진 eigen vector입니다. - cross validation?
머신러닝 모델의 성능을 평가하는 방법중의 하나입니다. 모델에 학습할 데이터를 분할할때, 데이터에 편향이 생길 수 있기때문에 학습데이터를 여러개의 작은 서브셋으로 나누어서 각각의 셋을 validation으로 사용하고 나머지 셋을 학습용으로 사용하는 방식입니다. 가장 많이 쓰이는 방법은 k-fold cross val. - overfitting?
기계를 학습시킬시 훈련데이터에 대해서 과하게 학습되어 새로운 데이터에 대한 예측을 수행했을때 성능이 떨어지는 모델의 일반화 문제를 말합니다. 이러한 문제가 발생하는 이유는 훈련데이터에 대해서만 적합되다보니 노이즈나 이상치등의 특이한 패턴까지도 학습하는 경우가 있기 때문입니다.
오버피팅을 방지하는 방법은 여러가지가 있습니다. 우선 가장 효과적인 방법은 훈련데이터의 수를 늘리는것입니다.cross validation과 같은 성능평가 방법을 사용하여 모델의 성능을 평가할수도 있습니다.
또한 regularization을 적용해 모델에게 일종의 규제를 걸어줌으로서 모델이 노이즈나 이상치등 일반화에 저해되는 훈련셋만의 특이한 패턴을 학습하는 것을 방지할 수 있습니다. - regularization?
regularization은 머신러닝 모델에서 overfit을 방지하기 위한 방법중 하나입니다. 모델이 훈련데이터에 너무 적합되어 새로운 데이터에 대한 예측력이 떨어지면, regularization을 통해 모델이 노이즈나 이상치등의 특이한 패턴을 학습하지 않도록 해줄 수 있습니다.
딥러닝에서는 대표적으로 dropout과 batchnormalization과 같은 기법들이 자주 사용됩니다. dropout은 신경망 학습과정에서 일부 뉴런을 랜덤하게 제거해서 학습을 시켜 일반화 성능을 끌어올립니다. - L1(Lasso), L2(Ridge) Regularization
모델의 weight값을 제한하여 모델의 복잡성을 제어하는 것으로 overfit을 방지하는 기법. 목적함수(비용함수)에 패널티 term을 추가하여 가중치가 일정 크기이상 증가하지 못하도록 제한하는 방식으로 작동한다.
작은 가중치 값이 필요한 이유? 가중치가 커질수록 함수는 인풋에 민감해지고 식이 복잡해지는 경향이 생기기 떄문. input에 민감해진다는건 학습하길 원하지 않는 이상치나 noise에도 민감하게 가중치가 조정된다는 뜻이고 이것이 오버핏을 유발하는 주요원인. 즉, 가중치가 일정이상 커지지못하도록 막는것은 모델의 복잡도를 감소시키는것과도 같다.- L1 : Lasso 라고도 불리고 가중치가 sparse representation을 가지도록 만드는 것이 목적이다. 몇몇 가중치값들을 0에 가깝게 만듦으로서 sparse한 matrix를 만들어냄. hyper-param alpha가 커질수록 weight가 제한되는 정도도 커지고 이때 L1은 더 많은 weight 값이 0에 가까워짐. 목적함수에 적은 영향도를 가지는 가중치를 0에 가깝게 sparse함. 이떄 weight를 제한하는 constraint boundary가 L1 norm.
- L2 : Ridge regression이라고도 불리고 L1 norm 대신 L2 norm을 사용하여 패널티를 부여. 목적함수에 패널티항을 더해주는것이 미분값을 계산하고 descent로 가중치를 업데이트 해줄때에는 weight값에 alpha만큼 스케일링한 weight를 빼주는것과 같은 효과.
- L0 norm: vector 원소중 0이 아닌것의 개수를 측정. alpha 값을 통해 제한되는 weight는 값이 아닌 개수. 즉, alpha값이 높을수록 0이 아닌 weight 값이 적어짐. L1과 비슷한 역할.
- Dropout
신경망이 특정 유닛에 과도하게 의존하지 않고 특성들을 학습하도록 하는 역할. 일반화 능력의 확대라는 부분에서 regularization. 훈련과정에서 신경망을 구성하는 일부 뉴런을 임의로 설정한 비율만큼 선택하여 제외하는 방식. 학습과정과 업데이트에서 활성화된 유닛들만 업데이트에 참여. 반면 학습된 모델로 예측하는 과정에서는 모든 유닛을 사용. 대신 출력값에 dropout비율을 곱해줌. - activation function?
활성화함수는 딥러닝모델에서 뉴런의 입력값을 변환하여 출력값을 생성해내는 함수입니다. 이때 활성화함수는 모델이 non-linear한 학습이 가능하도록 해줍니다. non-linear한 관계를 학습하는 것의 의미는 어떤 입력과 출력의 좀 더 복잡한 관계를 모델링할 수 있다는 것입니다. 선형함수를 가정한다면 출력값은 입력값에 대해서 일정비율에 의해만 변화하지만 비선형함수를 통과시키면 다양한 정도로 변화하게 됩니다.
신경망에서 자주 사용되는 활성화함수는 sigmoid, relu, softmax등이 있습니다. 시그모이드는 이진분류문제의 출력층에 자주 사용되는 활성화함수입니다. 시그모이드는 작은 입력값에 대한 gradient가 너무 작아지는 문제로 인해 계속해서 신경망 층을 쌓아가는 과정에서 역전파를 통한 gradient곱셈이 반복적으로 수행될때 기울기가 너무 작아지는 문제가 발생합니다. 이런 vanishing gradient문제를 해결하기위해 ReLu와 같은 활성화함수가 은닉층에서 주로 사용되고 있습니다. ReLu는 입력값이 0보다 작을경우 0을 출력하고, 입력값이 0보다 큰경우 그대로 출력합니다. 즉, 입력값이 0이상이라면 항상 graddient가 1인 선형함수가 되기 때문에 , 역전파 과정에서 gradient가 줄어들지 않고 일정하게 유지되게 됩니다. - linear vs logistic vs softmax regression
로지스틱회귀는 이진분류문제에서 자주 사용되는 통계학적 모델로 logit을 linear regression함으로써 이진분류를 수행하게 됩니다. 이때 모델은 입력특성과 해당 특성이 어느 클래스에 속하는지를 나타내는 이진변수사이의 관계를 모델링합니다.
여기서 logit이란 log 오즈인데, 오즈는 승산을 의미하고 이길확률이 q라고 했을때, 1-q/q입니다. 그래서 모델의 출력이 log오즈가 나오도록 학습이 되었다면, 이 값을 sigmoid에 통과시켜서 확률값의 형태로 얻게 됩니다.
logistic regression에서의 손실함수? = NLL loss!
likelihood = 조건부 확률에서 조건에 해당하는 부분의 함수. 즉 분류문제를 가정한다면 정답 y가 정해져있을때 x1,x2,x3라는 데이터를 통과시켜서 y가 나올확률값들의 곱이 손실함수가되는것. 즉, neural net을 f(x,w)라는 함수라고 가정할때, sigmoid(f(x,w))는 확률값의 형태로 출력되고 이진분류이기 때문에 정답이 아닐 확률은 1-sigomoid(f(x,w))와 같은 형태로 표현되고 이 조건부 확률은 독립이기 때문에 곱으로 표현이 가능하다. 따라서 loss는 파이P(Y|Xi)와 같은 형태로 표현이 가능.(모든 확률값의 곱). 이때 해당식은 정답값을 학습시키기위해선 maximize해야하므로 (확률값이 정답에맞게 높여야하기 때문에) -log를 취해서 최소값 찾기 문제로 변경. 이것이 NLL. - 회귀와 분류의 차이?
두가지의 가장 큰 차이는 출력값의 유형입니다. regression은 출력값이 연속형인 반면 분류문제는 이산형 클래스 레이블입니다. 하지만 분류문제또한 결국regression으로 볼 수도 있습니다. logistic regression을 예로들자면, logistic regression은 결국 logit을 linear regression한 후 sigmoid라는 비선형 활성화함수를 통과시켜 분류를 수행하도록 학습됩니다. - 손실함수
loss = 하나의 train example에 대한 라벨과의 차이 (오차)
cost = 전체 샘플에 대해 나눠준것y_pred = last layer’s activation / L’ = da
object = 목적함수, ML에서는 손실을 줄이는 것이 목적이기 때문에 cost function이 목적함수
- cross-entropy:
L = -∑(y * log(y_pred) )
- L = -[y * log(y_pred) + (1 - y) * log(1 - y_pred)]
- dL/da: L’ = - [ y / y_pred - (1-y) / (1-y_pred) ] == da
- da/dz: L’’ = y_pred(1 - y_pred)
- chainrule: dL/da * da/dz = dL/dz = y_pred-y == dz
- dw = dL/da * da/dz * dz/dw = =x1 * dz
- L = (1/n) * Σ(y - ŷ)^2
- cross-entropy:
- suppor vector machine?
서포트 벡터머신은 주어진 데이터셋을 가장 잘 분류할 수 있는 decision boundary를 찾는 알고리즘입니다. 이때 svm은 데이터의 특징을 나타내는 벡터들과 그 벡터들이 속하는 클래스를 이용하여 경계선을 찾습니다. 이때 경계선은 가장 가까운 벡터들과의 거리를 최대화하는 최적의 선을 찾습니다. 이렇게 최적의 경계선을 찾는 과정에서 가장 가까운 벡터들을 서포트벡터라고 부릅니다.
SVM은 데이터의 차원이 높아지더라도 잘 작동하는 특징을 가지고 있습니다. 이는 커널 함수를 사용하여 데이터를 고차원공간으로 변환한 후 분류작업을 수행하기 때문입니다. (커널함수의 역할 = 데이터를 고차원으로 변환) - naive bayes classifier?
베이즈정리와 확률론적 모델링을 이용하여 분류문제를 해결하는 기계학습 알고리즘입니다. 입력변수x와 출력변수 y가 잇을때, y의 확률을 x로 부터 추정하는 방법입니다. 이때 각 입력변수 xi가 y에 미치는 영향의 정도가 각각 독립적이라는 가정이 필요하고 이 가정을 ‘naive’하다고 표현합니다.
구체적으로는 입력변수 xi가 범주형변수일때, 해당변수가 특정 범주에서 나타날 확률을 이용하여 y의 가능성을 추정합니다. 이때 모든 가능한 y값에 대한 조건부확률을 계산하고 그 중 가장 큰값을 갖는 y값을 최종적인 분류결과로 예측하게 됩니다. 여기서 y의 조건부 확률 계산에 베이즈정리가 이용됩니다. - Cross Entropy?
분류문제에서 자주 사용되는 손실함수 중 하나로, 예측 클래스와 정답클래스의 차이를 계산하는데 사용됩니다. 이때 예측값은 확률분포의 형태로 나타낼수 있는데, 여러개의 클래스에서 하나의 클래스를 예측하는 task를 가정한다면 각 클래스에 대한 예측값을 확률값형태의 확률벡터로 나타낼수 있습니다. cross entropy는 정답분포와 예측확률의 분포가 완전히 일치할때 최소값을 가지고 두 분포의 차이가 클 수록 값이 커지게 됩니다.
구체적인 계산과정은 다음과 같습니다. 우선 정답클래스의 라벨에 해당하는 값을 원핫벡터 형태로 표현하고 모델이 예측한 확률벡터와 정답벡터를 elementwise로 곱한후 더해서 -log를 취한값입니다.
클래스가 두개인 이진분류 문제의 경우 라벨은 0과1의 값을 가지고 다중분류 문제에서는 원핫벡터 형태로 표현됩니다. 이진분류 문제에서는 특히 binary cross entropy라는 손실함수를 자주 사용합니다. - gradient vanishing vs exploding
둘다 신경망에서 학습을 시킬떄 gradient를 계산하는 과정에서 발생하는 문제들. 너무 작아지거나 커지거나.
vanishing은 여러개의 layer를 거치면서 계속해서 activation이 반복되며 gradient가 지수적으로 감소해 너무 작은값으로 가는문제. 주로 활성화함수의 선택에 의해 문제가 발생하며 sigmoid대신 relu와 같은 선형성을 포함한 함수를 선택함으로서 문제가 많이 해결.
exploding은 주로 weight initialization과 관련해서 발생하는 문제로 해결을 위해 여러 가중치 초기화 방식을 사용한다.
weight matrix를 np.random.rand(shape)로 만들어줄떄, 각 element에 sqrt(1/num_neurons of last layer)를 곱해줌으로써 수행되는 것이 Xavier intializaiton. 이떄 act_func = tanh
Relu를 사용할경우 2/n[l-1] - k-means clustering
비지도학습 방식의 일종으로 데이터를 유사한 특징을 가진 클러스터로 분류하는 알고리즘. 클러스터의 개수 k개를 선택했다면 초기에 임의의 k개 중심값을 선택한 후 각 데이터포인트별로 중심값과의 유클리디안 거리를 계산하여 가장 가까운 중심의 클러스터에 각 데이터포인트를 할당합니다. 이후 업데이트 스텝에서는 할당된 데이터포인트를 기반으로 새로운 중심을 계산한후 데이터포인트의 평균위치로 중심을 이동시키고 새롭게 클러스터로 데이터를 할당하는 과정을 반복합니다. - suppor vector machine?
SVM은 데이터의 차원이 높아지더라도 잘 작동하는 특징을 가지고 있습니다. 이는 커널 함수를 사용하여 데이터를 고차원공간으로 변환한 후 분류작업을 수행하기 때문입니다. (커널함수의 역할 = 데이터를 고차원으로 변환)
서포트 벡터머신은 주어진 데이터셋을 가장 잘 분류할 수 있는 decision boundary를 찾는 알고리즘입니다. 이때 svm은 데이터의 특징을 나타내는 벡터들과 그 벡터들이 속하는 클래스를 이용하여 경계선을 찾습니다. 이때 경계선은 가장 가까운 벡터들과의 거리를 최대화하는 최적의 선을 찾습니다. 이렇게 최적의 경계선을 찾는 과정에서 가장 가까운 벡터들을 서포트벡터라고 부릅니다. - naive bayes classifier?
구체적으로는 입력변수 xi가 범주형변수일때, 해당변수가 특정 범주에서 나타날 확률을 이용하여 y의 가능성을 추정합니다. 이때 모든 가능한 y값에 대한 조건부확률을 계산하고 그 중 가장 큰값을 갖는 y값을 최종적인 분류결과로 예측하게 됩니다. 여기서 y의 조건부 확률 계산에 베이즈정리가 이용됩니다. 베이즈정리와 확률론적 모델링을 이용하여 분류문제를 해결하는 기계학습 알고리즘입니다. 입력변수x와 출력변수 y가 잇을때, y의 확률을 x로 부터 추정하는 방법입니다. 이때 각 입력변수 xi가 y에 미치는 영향의 정도가 각각 독립적이라는 가정이 필요하고 이 가정을 ‘naive’하다고 표현합니다. - AutoEncoder?
일반적으로 MLP의 형태로 구현되며 인코더에서 적은수의 유닛으로 나아가며 입력데이터를 압축하는 가중치값들을 학습하고 반대로 latent vector에서 다시 입력값으로 복원하는 디코더를 거칩니다. 일반적으로 MSE를 손실함수로 사용하고 이를 통해 원본입력과 디코더의 출력 차이가 최소화되도록 학습합니다. 비지도 학습기법의 일종으로 입력데이터를 압축하는 encoder와 압축된 표현을 다시 원래 입력으로 복원하는 decoder로 이뤄져있습니다. 학습의 목적은 입력데이터의 latent sapce에 대한 표현을 학습하는 것입니다. - embedding? / embedding space
단어의 정수인코딩 → 임베딩층 → lookuptable의 학습 → 밀집벡터
if word index = 100, lookupt tabel의 100번째 행이 word vector
텍스트와 같은 데이터들을 numerical 한 vector로 변환하는 과정. 주로 NLP에서는 word embedding을 다루는데, word embedding은 단어에 대한 dense representation입니다. 이는 원핫벡터형태로 워드사전에 대해서 표현된 sparse 방식보다 좀 더 효율적입니다. 그래서 embedding space상에서 비슷한 의미를 가진 단어끼리 좀 더 가까운 거리에 위치하도록 매핑됩니다. - CNN?
비전분야에서 자주 사용되는 딥러닝 구조로 크게 convolution layer와 커널이라는 필터 그리고 풀링층으로 이루어져있습니다. 이미지와 같은 2D데이터를 입력으로 받는다고 가정하면 conv layer와 kernel을 통과하면서 합성곱 연산을 수행하게 되고 이 과정을 입력된 데이터의 특징을 추출하는 과정이라고 이해할 수 있습니다. 이때 커널은 입력 이미지 모든 위치에서 동일한 가중치를 공유하기 때문에 CNN은 이미지의 특징을 추출하는 필터(kernel)의 값을 학습하는 방식으로 이뤄진다고도 볼 수 있습니다. 이후의 풀링층은 conv와 kernel을 통해 추출한 feature map의 크기를 줄여주는 역할을 합니다. - RNN?
인공신경망 구조의 일종으로 시퀀스가 있는 데이터를 다루는 것에 특화된 구조를 가지고 있습니다. RNN이 시퀀스데이터를 다루는것에 적합한 이유는 입력값을 순차적으로 처리하면서 이전 입력값으로부터 계산된 hiddenstate를 다음 입력값에 반영하는 구조이기 때문입니다.
하지만 RNN이 가지고 있는 문제점도 있습니다. 입력 시퀀스의 길이가 길어질수록 이전 입력값의 정보를 유지하기 어려워집니다. 이를 long term dependency라고 하는데, 학습의 과정에서 gradient vanishing 또는 exploding의 문제가 발생하기 때문입니다. 구체적으로는 RNN은 각 입력값에 대해 가중치와 편향을 공유하여 사용하는 구조를 가지고 있는데, 이것이 역전파를 통해 gradient를 역으로 곱해가는 과정에서 연속적인 곱셈이 반복되면서 0에 가깝게 가버리거나 지수적으로 크게 증가해버리는 문제를 야기합니다.
특히 자연어처리에서는 문장을 구성하는 단어들의 시퀀스가 문장의 맥락을 파악하는 관점에서 중요하기 때문에 transformer가 등장하기 이전까지 대부분의 언어모델에서 많이 사용되어왔습니다.이런 문제를 극복하기위해 LSTM과 같은 변형모델이 등장하여 문제를 어느정도 개선하기는 합니다. LSTM는 입력값의 정보를 long-term memory cell에 저장하여 이전 입력값의 정보를 유지하면서도 새로운 입력값을 처리할 수 있는 구조를 가지고 있기때문입니다.
또한 이후 self-attention을 사용하는 transformer구조가 등장하면서 입력 시퀀스에 따라 순차적으로 단어간 관계를 고려하는 RNN기반과 달리 self-attention을 통해 입력시퀀스의 모든 위치에서 모든 단어 페어간의 관계를 고려할 수 있게 됩니다. - negative sampling?
word2vec에서 워드 임베딩의 학습을 위해 사용되는 기법으로, 중심단어에 따른 주변단어 윈도우를 예측하는 방식인 skip gram 에 주로 적용됩니다. 핵심은, 기존 소프트맥스를 사용해서 단어사전의 모든 단어에 대한 확률값을 계산하는 것이 비효율적이니, 무작위로 선택된 일부의 negative sample에 대해 해당 input word와 유사한 문맥을 갖는 단어인지 아닌지를 분류하는 이진분류 문제를 여러개 수행하는 방식으로 변환하는 것. - Transformer?
- self attention
기존 RNN , seq2seq기반 모델의 고질적인 문제점인 long term dependency. 시퀀스 길이가 길어질수록 멀리있는 단어간 관계가 vanishing되는 문제.self-attention이라는 새로운 방식의 단어간 관계파악 매커니즘. 입력받은 텍스트 내에 존재하는 모든 단어간 관계를 매핑.
우선 임베딩벡터와 W연산을통해 Q,K,V 라는 벡터를 만들어줌. 이후 쿼리와 키의 내적 하고 해당값을 key의 차원 루트값으로 스케일링후 소프트맥스를 취해준다. 이 값은 attention energy라고 불리기도 하고, 확률값의 형태로 나타난 각 쿼리별 키와의 유사도를 나타냄. 여기에 value를 곱해주면 어텐션 매트릭스가 탄생.
또한 논문에서는 이러한 과정을 여러개의 헤드로 나누어 병렬적으로 연산을 수행하는 구조를 만들었는데 이것이 멀티헤드어텐션. 임베딩에서 도출된 QKV벡터를 헤드의 개수대로 linear projection을 통해서 나눠주고 각 벡터들에 대해 연산을 수행한 후 마지막에 일자로 concat후 다시 사이즈에 맞는 weight matrix를 곱해줌으로써 최종적인 멀티헤드 아웃풋이 다음 단계로 넘어가는 구조. 이때 메트릭스의 차원은 처음 어텐션이 입력받을때와 같은차원, 논문에서는 512 . - Encoder, decoder attention
총 3가지의 다른 어텐션 사용, 하나는 인코더부분의 어텐션, 다른 두가지는 디코더 부분의 마스크드 어텐션과 인코더-디코더 어텐션. 인코더는 어텐션후 residual connection과 layer normalization을 거치고 다시 feedforward net을 거친후 한번더 잔차연결&normalize를 하고 이것을 하나의 인코더 블록으로 정의. 디코더에서는 정답값에 해당하는 타겟 매트릭스를 입력으로 받을때, 각 타임스텝별 정답을 맞추도록 해야하기 때문에 상삼각부분에 마스킹을 추가해서 입력으로 넣은 후 어텐션을 수행. 이후 다음 단계에서 이때 계산한 어텐션의 쿼리값과 인코더에서의 키, 벨류값을 이용해 인코더-디코더 어텐션을 수행. 맞춰야 할 정답을 질문의 형태로 가져와 인코더에서 학습된 key, value값에게 어떤 단어에 어텐션을 둬야하는지 물어보는 과정이라고 비유할 수 있음.
- self attention
- BERT?
- MLM
입력문장에서 무작위로 선택된 일부단어를 마스킹 , 이 단어의 예측을 타겟으로 주변단어의 문맥과의 관계를 학습. 마스킹 위치에대한 추가적인 포지션 정보를 입력으로 받음. 단어간 문맥을 학습하는 과정이라고 해석가능. - NSP
두 문장이 주어졌을때, 두 문장이 첫번째 문장의 다음 문장인지, 아닌지를 예측. 문장간의 관계에 대한 이해를 얻는과정이라고 해석가능
- MLM
- RoBERTa, Electra
둘다 BERT의 개선된 버전으로 NSP를 사용하지 않고 MLM으로만 학습되었음. 사전 훈련과정에서 일부제약을 제거하고 더 많은 데이터양 .
ELectra는 생성자와 식별자라는 새로운 방식의 네트워크를 통해 pretrain. generator는 입력문장의 일부를 마스킹하고,마스킹된 단어를 예측하는 MLM태스크 수행. discriminator는 generator가 예측한 마스킹된 단어를 실제단어와 구별하기 위해 이진분류 작업을 수행. 이때 생성자와 식별자간의 경쟁을 통해 더 정확한 문맥을 파악하는 구조.생성자는 cross entropy를 통해 다중분류→ MLM / 식별자는 생성자가 예측한 토큰을 바탕으로 이진분류 학습 (가짜 라벨을 가정).생성자는 기존 BERT의 MLM과 동일하게 likelihood 를 maximize하는 방식으로 학습. 문맥적으로 말이되는 것에만 집중함. - Layer normalization vs Batch Normalization
batch norm의 한계를 보완하는 layer norm. batch norm의 가장 큰 단점은 batch크기에 영향을 받는다는 것입니다. 배치가 너무 작아버리면 통계적으로 normalization을 하는 의미가 없어져버립니다.
즉, batch가 큰수의 법칙을 만족할만큼 크지 않다면 가우시안 분포를 따르지 못하게됨. 따라서 layernorm은 미니배치단위가 아닌 각 샘플단위로 정규화를 수행.
구체적으로는 각 레이어별 샘플의 feature dimension에 대한 평균과 분산으로 정규화. 즉, batch norm은 어떤 입력데이터의 배치가 3이라고 가정하고 각 sample별로 6개의 feature를 가진다고 가정하면, sample(1,2,3,)’s feature1 의 평균 , feature2의 평균… 이런식으로 계산하고 layer norm은 sample1의 Feautre 123456의 평균, sample2의 feature123456의 평균.. 이런식으로 연산후 정규화.
transformer에 layernorm이 더 적합한 이유는 자연어가 sequence data이기 때문. 또한 레이어마다 입력값의 차원이 다름 (seq len가 다르기때문)
문장1: [1,2,3,4,5]
문장2: [2,3,4,5,6]
문장3: [3,4,5,6,7]
배치사이즈가3이라면,
batchnorm = [(1+2+3)/3 , (2+3+4)/3, …]
layernorm = [(1+2+3+4+5)/5, (2+3+4+5+6)/5, …]
따라서 seq가 있는 자연어 임베딩에서는 입력문장마다 길이가 다르기 때문에 batchnorm이 적합하지 않음. - positional encoding?
문장의 시퀀스의 위치정보를 모델링하는 기법입니다. 순차적으로 입력데이터의 시퀀스가 처리되는 RNN계열의 모델과 달리 transformer에서는 입력시퀀스의 원소들이 서로 독립적으로 처리되기 때문에 위치에 대한 정보를 모델에게 입력시켜주는 과정이 필요합니다. 이때 positional encoding은 입력시퀀스의 각 위치에 대해 사인 코사인그래프를 이용해 고유한 벡터를 할당하게 됩니다. 이 값은 입력 데이터의 임베딩에 더해저 모델의 입력으로 같이 들어가게 됩니다. 이때 sincos 함수는 주기성을 가지고 있으면서도 범위가 -1~1로 한정되기 때문에 임베딩에 더해질때 벡터의 크기를 너무 크게 변화시키지 않으면서도 서로 다른 위치에 대해 고유한 값을 생성할 수 있습니다. 즉, 주기함수를 통해 위치간의 상대적인 거리를 고려해서 고유한 위치정보를 인코딩하면서도 임베딩 벡터의 크기 변동성도 최소화할 수 있습니다. - feedforward network?
인공신경망을 구성하는 기본요소중 하나로 입력데이터를 Multilayer perceptron형태로 변환하는 구조입니다. 보통 모델의 레이어중 하나로 사용되며 각 레이어는 여러개의 뉴런으로 구성되어 입력벡터와 가중치벡터의 곱연산과 편향덧셈이 수행되고 이값을 활성화함수에 통과시키는 연산과정이 레이어마다 반복되게 됩니다.
트랜스포머의 경우에는 이 feedforward net을 attention block 뒷단에 위치시켜서 임베딩벡터의 셀프어텐션이 수행된 결과를 입력으로 받아 forward expansion을 통해 차원을 늘려 모델이 더 다양한 표현을 학습하고 활성화함수를 통과하도록하는 역할을 수행합니다. - residual connection?
각 레이어에서 입력벡터를 그대로 출력벡터에 더해주는 방식. 레이어가 늘어나더라도 입력데이터의 손실이 최소화되도록 하기위함. 트랜스포머의 경우 각 층마다 residual connection과 layernormalization을 같이 사용하면서 각 레이어의 입력과 출력사이의 연결을 통해 gradient가 모델을 더 쉽게 통과하고 모델의 학습이 안정화되는 결과를 얻도록 설계되었습니다. - adversarial training
adversarial example 을 생성하고 모델이 이 입력에 대해서도 학습하도록 하여 모델의 강건성과 일반화성능을 올리는 방법
- loss 값을 최대로 만드는 adversarial example을 생성한 후, 그 example을 학습데이터로 하는 lossfunction이 최소가되도록 학습
- inner maximization problem - find adversarial example
- outer minimization probelm - gradient descent
기존의 손실함수에 adversarial loss function를 추가하여 손실함수를 구성 → 해당 손실함수는 adversarial example을 생성하는데 사용
adversarial loss= original_loss + epsilon * sign(d/dx(original_loss, input)
즉, 손실함수에 대한 미분을 통해 손실함수를 최대화하는 방향으로 기존 input_x를 epsilon 만큼 이동시켜서 adversarial example을 생성하는것.
이때 epsilon값을 조절하여 기존 입력과 차이가 거의없는 작은변화로 모델이 큰 confidence를 잘못 가지도록 하는 예제를 생성해내는것이 핵심.
adversarial loss function: loss 가 증가하는 방향(미분한 방향) 으로 input x를 epsilon만큼 이동하여 새로운 데이터를 생성하지만 adversarial training은 일반적인 개념. 경쟁적인 두가지 모델구조가 경쟁을 통해 학습을 이어가는 모델 구조 대부분을 일컫는 말로 사용됨. GAN이나 ELECTRA같은 생성자, 판별자 구조의 모델들도 adversarial training.
입력값이 음수인경우-1, 양수인경우 +1을 반환하는 sign 함수를 사용