300x250

여러 인공지능 대학원을 준비하면서 정보가 없어 너무 힘들었다.

그래도 꾸역꾸역 찾아가며 공부해서 결국 진학에 성공했는데, 그 과정에서 공부한 내용들을 키워드 기준으로 쭉 정리해보려 한다. (금방 까먹는 내용이라 본인도 연구를 하면서 계속 확인할 내용이 될 것 같다.)

각 내용에 대해 깊은 이해를 한다기 보다는 전체적으로 간단히 개념을 정리하는 Summary로 생각하자!

좀 더 자세한 설명을 원한다면, 블로그 내의 다른 글을 참조하자. 특히 알고리즘에 대한 내용은 요약 내용에서 뺐는데, 다른 포스팅에 상세하게 내용을 정리해 두었다.

 

 

 

목차

     

     

     

     

     

     

    인공지능(딥러닝) 기초

     

     

     

     

    Supervised Learning, Unsupervised Learning, Self-supervised Learning, Semi-supervised Learning, Reinforcement Learning (★★★★★)

     

    Supervised Learning은 input data에 label(정답값)이 존재한다. 모델의 목표는 본 적 없는 데이터가 주어졌을 때 정확한 값을 예측하는 것이다.

    Unsupervised Learning은 input data에 label이 없다. 모델의 목표는 주어진 데이터가 갖는 구조나 패턴을 파악하는 것이다.

    Labeling task의 비용이 크기 때문에, self-supervised learning에서는 label이 거의 없는 데이터에 대해 진행된다. Label이 있는 데이터로 먼저 학습한 모델로 나머지 labeling을 진행하고, 이러한 pseudo-label을 통해 전체 모델에 대해 supervised learning을 진행한다.

    (이외에도 깊이 들어가면 self-supervised learning은 다양한 방법이 있다.)

    semi-supervised learning에서는 labeled, unlabeled 데이터가 섞여있는 경우, labeled data로는 supervised learning을, unlabeled data로는 unsupervised learning을 진행하는 방식이다.

    Reinforcement Learning에서는 실험을 수없이 반복하면서 agent가 더 높은 reward를 얻도록 학습시킨다.

     

     

     

     

    Bias, Variance, 서로의 관계?

     

    머신러닝에서 bias란 예측값과 실제값의 차의 평균, 즉 fitting하지 못하는 정도를 나타낸다.

    Bias가 높을수록 모델이 실제 값을 예측하지 못하는 것이다.

    Variance는 다양한 데이터셋에 대해 예측값이 얼마나 변하는지, 쉽게 말해 training set에서와 test set에서의 fitting 정도의 차이이다.

    두 개념은 trade-off 관계이며, 머신러닝의 최종 목표는 bias를 낮추면서 variance도 낮추는 것이다.

     

     

     

     

    Curse of Dimensionality (차원의 저주)?

     

    모델의 차원이 높아지면(복잡해지면) 필요한 데이터가 지수적으로 증가함을 말한다.

     

     

     

     

    Dataset을 Train, Validation, Test dataset으로 나누는 이유

     

    Training set은 모델의 parameters를 학습하기 위해 사용되고, validation set은 hyperparameters를 찾는 데 사용된다.

    Training set의 일부를 validation set으로 나누어서 학습 도중에 최고 성능을 갖는 모델을 찾는 데 사용한다. (validation)

    학습 후에, 본 적 없는 데이터인 test set을 사용하여 일반화 성능을 검증한다. (test)

     

     

     

     

    Gradient Descent (★★★★★)

     

    Optimization(최적화) 과정에서, weight로 loss를 계산한다. 학습 과정에서는 이러한 loss를 최소화하면서 weight를 업데이트한다.

    이때 loss의 gradient를 빼주어 weight를 업데이트하는 것을 gradient descent라 한다.

     

     

     

     

    Batch Gradient Descent vs Stochastic Gradient Descent (★★★★★)

     

    가장 간단한 gradient descent 알고리즘은 Batch Gradient Descent이다. 단순하게 모든 데이터에 대해 loss의 합을 최소화한다.

    Stochastic Gradient Descent는 training set에서 minibatch를 샘플링한다. 이렇게 샘플링된 m개의 데이터에 대해 loss의 합을 최소한다.

    인공신경망 모델은 non-linear이기 때문에, Stochastic Gradient Descent가 더 유용하다. Local minima problem에 더 강인하기 때문이다. 또한, 모든 데이터를 학습하기에는 메모리가 부족할 수 있는데, 그 문제를 해결할 수 있다.

     

     

     

     

    Activation Function

     

    활성 함수는 input value와 weight를 받아 output value를 출력한다.

    예시로는 Step function, Linear function, Sigmoid function, Hyper-tangent function, ReLU function 등이 있다.

     

     

     

     

    Gradient Vanishing/Exploding? (★★★★)

     

    인공신경망의 층이 깊어질수록 backpropagation 과정에서 input layer에 가까워질수록 (편미분이 계속해서 곱해지기 때문에) gradient가 너무 작아지거나 너무 커진다.

    이 문제를 ReLU activation function이나 batch normalization 기법 등으로 해결할 수 있다.

     

     

     

     

    Batch Normalization?

     

    Batch normalization은 각 layer의 input value에 대해 scale parameter와 shift parameter를 적용하여 효율적으로 학습할 수 있게 해준다.

    Gradient Vanishing/Exploding 문제를 해결해주고, 더 큰 learning rate로 (더 빨리) 학습할 수 있게 된다.

     

     

     

     

    Backpropagation? (★★★★★)

     

    인공신경망 학습 과정에서, 네트워크의 예측값은 forward-pass(input layer에서 output layer 방향)로 계산되고, error(loss)는 backward-pass(output layer에서 input layer 방향)로 편도함수와 chain rule을 통해 전파된다.

    Error가 backward-pass로 gradient와 곱해지며 전파되는 과정을 backpropagation이라 한다.

     

     

     

     

    Convolutional Neural Network? (★★★★★)

     

    CNN은 신경망 process에서 kernel(filter)과의 convolution operation을 적용한다.

    Kernel을 통해 parameter들을 공유하게 되어 학습 속도가 빨라지고, locally regional information을 더 잘 추출할 수 있게 된다.

    보통 grid-like topology인 image, video, time-series data 등을 다루는 데 쓰인다.

     

     

     

     

    RNN? LSTM?

     

    RNN 모델이 LSTM 모델의 기본형이다.

    RNN 모델은 state를 업데이트하기 위해 recurrent connection (skip connection)을 사용하는데, 이는 input에 대한 활성 함수 결과를 저장한다.

    RNN 모델은 text, time-series data 등의 sequential data를 다루기에 적합하며, Sentiment Classification, Language Modeling, Image Captioning, Machine Translation 등의 task에 적용된다.

     

    RNN은 gradient vanishing 문제 때문에 long-term dependency를 학습하기가 어려운데, LSTM 모델이 이러한 문제점을 보완했다.

    LSTM 모델은 현재 layer에 대한 데이터 플로우를 추가하여 long-term dependency를 다루도록 했다.

    GRU는 LSTM 모델의 단순한 형태이며, output gate와 input gate를 update gate로 병합한 형태이다.

     

     

     

     

    Confusion Matrix, Type 1 Error, Type 2 Error, Precision, Recall?

     

    Precision과 recall 값은 classifier를 평가하는 데 사용되는 척도이다.

    Classification model의 평가 시, confusion matrix라는 것을 사용한다. 이는 실제 데이터와 모델의 예측값을 matrix로 비교하는 데 쓰인다.

    여기서 type 1 error는 모델이 positive로 예측했지만, 실제로 negative인 경우를 말하고, type 2 error는 모델이 negative로 예측했지만, 실제로 positive인 경우를 말한다.

    Precision과 Recall 계산 방법은 아래 사진을 참고하자.

     

    Calculation of Precision and Recall

     

     

     

     

    Softmax Function

     

    Softmax function은 3개 이상의 class를 사용하는 경우에서 특정 class의 확률 개념을 나타낸다. 모든 output value의 합은 1이며, 도함수를 계산할 수 있기 때문에 back propagation을 적용할 수 있다.

     

     

     

     

    Cross Entropy? Cross Entropy Loss?

     

    Entropy란 불확실한 정도를 나타낸다.

    Cross-entropy 값은 관측된 확률과 예측 확률의 로그값을 곱한 후 negative sum을 취하여 계산한다.

    어떤 신경망에 대해 모든 cross entropy 값을 더하여 total error를 구할 때, 이를 cross-entropy loss라 한다.

    Negative log가 loss 값에 포함되기 때문에, 잘못된 예측에 대한 도함수 값이 매우 커진다.

     

     

     

     

    Overfitting/Underfitting? (★★★★★)

     

    Underfitting이란, 모델이 training data를 제대로 학습하지 못했다(fit되지 않았다)는 것을 말하고, overfitting이란 training data를 과도하게 학습하여서 training data에만 잘 fit하고, test data(unseen data)의 성능은 낮은 경우를 말한다.

    모델의 목표는 unseen data를 잘 예측하는 것이기 때문에 underfitting과 overfitting 둘 다 해결되어야 할 것이다.

    Underfitting을 해결하기 위해서는 더 복잡한(깊은) 모델을 사용하거나 학습 epoch을 늘리면 된다.

    Overfitting을 해결하기 위해서는 dropout이나 regularization을 적용하거나, network의 사이즈를 줄인다.

     

     

     

     

    Regularization

     

    Regularization은 loss function에 cost를 더하여 네트워크의 크기를 줄이는 방법이다.

    L1 regularization에서는 cost가 L1 norm, 즉 weight의 절댓값이다.

    L2 regularization에서는 cost가 L2 norm, 즉 weight의 제곱이다.

     

     

     

     

    Dropout

     

    Dropout은 학습 과정에서 layer의 output feature의 수를 랜덤하게 줄이는 것을 말한다.

    Test 시에는 같은 input에 대해 같은 output을 출력해야 하므로 dropout을 적용하면 안된다는 것에 주의하자.

     

     

     

     

    Variation Auto-Encoder(VAE)?

     

    먼저 생성 모델(Generative Model)이란, 새로운 data instance를 발생시키는(generate) 모델을 말한다. 여기서 generation은 training data의 분포의 근사라고 할 수 있다.

    Auto-encoder의 목표는 encoder로 latent features(fixed vectors 형태)를 추출하는 것이다.

    하지만, variational auto-encoder에서의 encoder는 latent space 상의 분포에 대한 parameter를 추출한다. Decoder는 랜덤으로 이러한 distribution을 input으로 취하고, reconstruct된 이미지를 출력한다.

    즉, auto-encoder의 목표는 encoder 부분(latent space)을 학습시키는 것이 목표이고, variational auto-encoder의 목표는 decoder 부분(generation)을 학습시키는 것이 목표이다.

     

     

     

     

    Generative Adversarial Network (GAN)?

     

    GAN은 generator와 discriminator라는 sub-network를 갖는다.

    Generator가 latent space에서 random vector를 취하여 decoding을 거쳐 이미지를 생성하고, discriminator는 실제 이미지와 만들어낸 이미지를 구별하게 함으로써 두 모델이 경쟁적으로 학습하도록 한다.

     

     

     

     

     

     

    Mathematics - Linear Algebra

     

     

     

     

    Linearly Independent?

     

    어떤 벡터 집합 내에서, 서로 다른 벡터들의 선형 결합으로 어떤 벡터를 표현할 수 없을 때, 그 집합의 벡터들은 서로 선형 독립이라 한다.

     

     

     

     

    Span과 Basis란? 구하는 방법은?

     

    벡터들의 모든 Linear combination 집합을 span이라 한다.

    Basis는 그것의 linear combination으로 표현되는 어떤 벡터공간(vector spaces) 내의 모든 벡터 집합을 의미한다.

    Basis는 사다리꼴 행렬(Echelon form of Matrix)으로부터 얻는다. Pivot column이 basis의 요소이다.

     

     

     

     

    Rank? Dimension?

     

    Rank란, 행렬 내에서 서로 선형 독립인 column의 개수를 의미한다.

    Dimension은 basis의 요소의 개수이다.

     

     

     

    Column Spaces? Row Spaces?

     

    Column(row) space란, column(row) vector들에 의해 span될 수 있는 공간을 말한다.

     

     

     

     

    Null Space?

     

    Null space란, 행렬 \(\mathbf{A}\)에 대해 \( \mathbf{Ax=0}\)를 만족하는 벡터\(\mathbf{x}\)의 집합을 말한다.

    Nullity란, null space의 dimension이다.

     

     

     

     

    Image(range) and Kernel(nullspace)?

     

    Kernel의 차원은 사다리꼴 행렬의 non-pivot column의 개수와 같고, image의 차원은 사다리꼴 행렬의 pivot column 개수와 같다.

    또한, 다음을 만족한다.

    \( \text{rank}(\mathbf{A}) = \text{dim}\left( \text{Im}(f) \right) \)

     

     

     

     

    Symmetric Matrix?

     

    Symmetric Matrix란, \( \mathbf{A = A^T} \)인 행렬 \(\mathbf{A}\)를 말한다.

     

     

     

     

    Norm

     

    Norm이란, 벡터의 길이 개념이다. Norm은 inner product의 제곱근으로 계산한다.

    \( \sqrt{ \left\langle \mathbf{x}, \mathbf{x} \right\rangle } \)

     

     

     

     

    Distance? Metric?

     

    Distance란, 두 벡터의 차(subtraction)의 norm이고, metric은 두 벡터를 스칼라로 mapping하는 것을 말한다.

     

     

     

     

    Positive-definite?

     

    어떤 matrix \(\mathbf{Z}\)가 Positive-definite라는 것은 inner product 결과 스칼라가 양수인 경우를 말한다.

    \( \mathbf{z}^T \mathbf{Mz} > 0 \quad \quad \text{for all column vector }\mathbf{z} \text{ which is not } \mathbf{0} \)

     

     

     

     

    Angle between two vectors

     

    두 벡터 \(\mathbf{x, y}\)간의 각도는 다음과 같이 계산한다.

    \( \cfrac{ \left\langle \mathbf{x, y} \right\rangle }{\lVert \mathbf{x} \rVert \lVert \mathbf{y} \rVert} \)

     

     

     

     

    Orthogonality

     

    두 벡터의 inner product 결과가 0이면 두 벡터는 서로 직교한다.(orthogonal)

    만약 정사각행렬 \(\mathbf{A}\)가 orthogonal이면, \( \mathbf{A} \mathbf{A}^T = \mathbf{I}\)를 만족한다.

     

     

     

     

    Orthogonal Basis 구하는 방법

     

    어떤 basis vector에 대해, Inner product 결과가 자기 자신에 대해서만 1이고 나머지 basis vector와의 결과는 0이면 그 basis는 orthogonal basis이다.

     

     

     

     

    Determinant, Invertibility

     

    Determinant는 기하학적으로 2차원에서 두 벡터가 만드는 영역의 넓이, 3차원에서 세 벡터가 만드는 부피를 나타낸다.

    어떤 matrix의 determinant가 0이 아니라면, 그 행렬을 가역행렬이라 한다.(inverse가 존재하는 행렬)

     

     

     

     

    Eigen Vector, Eigen Value? 중요한 이유? (★★★★★)

     

    어떤 matrix에 의한 변형 결과가 vector이고, 그 벡터가 원래의 span에 그대로 놓여있다면, 해당 벡터는 eigen vector이다. 그리고 그 벡터의 전후 scaling factor(scalar)를 해당 matrix에 대한 eigen value라 한다.

    Eigen vector는 3차원 회전의 축을 나타낸다.

    Eigen space란 모든 eigen vector에 대한 span이고, eigen spectrum은 모든 eigenvalue들의 집합이다.

    Eigendecomposition, SVD, Pseudo-inverse, PCA 등등 인공지능에서 사용하는 수학적 기법의 기초가 되므로 매우 중요하다!

     

     

     

     

    Diagonalization?

     

    대각 행렬은 행렬의 determinant, power, inverse 등을 구할 때 계산이 아주 빠르므로 유용하다.

    어떤 Matrix \( \mathbf{A}\)에 대해, \( \mathbf{D} = \mathbf{P}^{-1} \mathbf{AP} \)를 만족하는 가역 행렬(invertible matrix) \( \mathbf{P}\)가 존재한다면 matrix \(\mathbf{A}\)는 Diagonalizable하다(대각화가 가능하다)고 한다.

     

     

     

     

    Eigendecomposition?

     

    정사각행렬 \( \mathbf{A} \)가 full rank이고, column vector들이 \( \mathbf{A} \)의 eigenvector들인 \( \mathbf{P}\)에 대해 \( \mathbf{A = P D } \mathbf{P}^{-1} \)로 대각화가 가능할 때, \( \mathbf{D} \)는 diagonal entries(대각 성분)이 \(\mathbf{A}\)의 eigenvalues인 대각 행렬이 된다.

    이때, \( \mathbf{A} \)의 모든 column vector들은 선형 독립이어야 한다.

    그리고 eigenvalue decomposition은 대상 matrix가 정사각행렬일 때에만 가능하다.

     

     

     

     

    Singular Value Decomposition(SVD)?

     

    정사각 행렬이 아니어도(모든 행렬에 대해) Decomposition을 수행할 수 있다.

    임의의 행렬 \(\mathbf{A}\)에 대해, \(\mathbf{A}\)는 \(\mathbf{A} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^T \)와 같이 분해될 수 있다.

    이때 matrix \( \boldsymbol{\Sigma} \)는 대각 성분이 아닌 모든 성분이 0이고, \(\mathbf{U}\)는 m × m orthogonal matrix, \(\mathbf{V}\)는 n × n orthogonal matrix 이다. (\(\boldsymbol{\Sigma}\)는 유일하게 정해짐)

    여기서 \( \boldsymbol{\Sigma} \)의 대각 성분들을 singular values라 하고, \( \mathbf{U}\)의 열벡터들을 left-singular vectors, \(\mathbf{V}\)의 열벡터들을 right-singular vectors라 한다.

    SVD는 dimensionality reduction 혹은 augmentation 시 사용한다. 예를 들어, 원래보다 singular value를 적게 고른다면, dimensionality reduction을 적용할 수 있고, 더 중요한 값들만 남게 된다.

     

     

     

     

    Jacobian Matrix

     

    Jacobian이란, 1차 편도함수를 모은 것을 말한다. 보통 matrix 형태로 나타낸다.

    같은 열에는 같은 variable, 같은 행에는 같은 함수에 대한 편미분이 존재한다.

     

    참고로, Hessian은 2차 편도함수의 모음이다.

     

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기