Ai

    seq2seq (시퀀스 to 시퀀스)

    seq2seq (시퀀스 to 시퀀스)

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다. seq2seq 의 구조는 위 그림과 같다. 각 셀은 LSTM이나 GRU를 주로 사용한다. (장기 의존성 문제를 최대한 해결하고자.. 하지만 100% 해결하지는 못함.) 또한 encoder의 마지막 context vector를 decoder의 처음 context vector으로 사용한다. 위 그림에서 볼 수 있듯 학습 시에는 정답을 decoder의 입력에 넣는다. (teacher forcing이라고 부른다.) 테스트 시에는 sos토큰이 decoder에 들어가서 나오는 출력인 $y_0$을 그 다음 입력으로 사용하고 $y_0$으로부터 나오는 출력인 $y_1$을 그 다음 입력으로 사용하고.. 하는 형태이다. 이를 eos토큰이 나올 때..

    RNN (Recurrent Neural Network)

    RNN (Recurrent Neural Network)

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.RNN은 연속적인 데이터를 처리하는데 효과적이다.  위 사진과 같이 우선 처음 입력 데이터를 가지고 노드의 값을 만든다.  두번째 입력 데이터로 노드를 만들 때 이전에 만들어진 노드의 값도 입력으로 넣는다.세번째 입력 데이터로 노드를 만들 때 이전에 만들어진 노드의 값도 입력으로 넣는다.반복...즉 이렇게 만들어진 노드들은 해당 time step에 해당하는 입력 데이터와, 그 전 입력 데이터와, 그 입력 데이터로 만들어진 노드가 들어있다. 하지만 마지막 출력값에 대해 처음 입력값이 미치는 영향은 어떨까? RNN은 activation으로 tanh를 사용하며 이를 미분했을때 최대값은 1이다. 그럼 backpropagation시 ta..

    VGGnet

    VGGnet

    해당 강의는 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.  VGG net의 골자인 첫번째 구조를 table로 나타낸 것이 위 표의 D 부분이다. 해당 부분에 대해 순서대로 이해해 보겠다.Input data : input으로는 3x224x224 size의 image를 받는다.conv3-64 통과 : conv3-64는 64x3x3x3을 의미하는데 이는 64개의 3x3x3 필터로 이미지를 컨볼루션 하겠다는 의미이다. (zero padding은 1로 설정한다고 논문에 나와있다.출력 shape : conv3-64를 거치면 64x224x224conv3-64 통과 : 위의 출력 shape에 대하여 conv3-64의 필터는 64x64x3x3출력 shape : conv3-64를 거치면 64x224x2..

    Padding, Stride, Pooling

    Padding, Stride, Pooling

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.1. Padding Padding이란, 입력 데이터가 filter를 거치면 size가 달라지는 문제를 해결하고자위 사진과 같이 입력 데이터 주변에 데이터를 감싸는 것이다. 이를 통해 출력의 사이즈를 입력의 사이즈와 일치시킬 수 있다.  2. Stride Stride란 기존에 filter가 한 칸씩 스캔하며 동작했던 것과 달리 몇 칸씩 움직일지를 옵션으로 부여한다. 한 칸 뿐만 아니라 n칸씩 이동시킬 수 있다.  3. Pooling Pooling이란 넓은 범위를 대표하는 값으로 대체하여 데이터의 사이즈를 줄일 수 있게끔 한다. (학습 파라미터는 전혀 필요하지 않다.) 위 사진의 예시는 max pooling의 예제이며, 해당 범위 ..

    CNN (Convolution Neural Network)

    CNN (Convolution Neural Network)

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.이미지가 입력으로 들어왔을 때 Fully Connected한 신경망은 모든 노드를 활성화 시켜서 이미지를 보려고 한다. 하지만 CNN은 위치별 특징(패턴) 을 Convolution을 통해 찾는다. 즉, 패턴을 통해 이미지가 무엇인지 알아내는 것이다. (인간처럼..)  CNN은 스캔하듯이 같은 weight와 bias를 가지는 kernel (filter)이라는 스캔기로 입력 데이터를 쭉 스캔한다. 위 과정은 가까이 있는 데이터들만 connection하여 하나의 노드를 구성하는 과정을 반복하게 되는데, 이를 통해 위치 정보를 유지할 수 있게 된다. (새롭게 태어난 노드는 그 구역의 담당 일진 느낌..)     그렇다면 convolut..

    Regularization (Overfitting 방지 방법)

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.Regularization은 overfitting을 줄일 수 있는 방법 중 하나이다. Regularization에 대해 알아보기 전에 $l_2 norm$과 $l_1 norm$에 대하여 정리한다. 벡터 $w$가 다음과 같이 정의되어 있다면, $\underline{w}=\begin{bmatrix} w_1 \\ w_2  \\ w_3 \end{bmatrix}$$l_2 norm= \begin{Vmatrix} w\end{Vmatrix}_2=(|w_1|^2+|w_2|^2+|w_3|^2)^{\frac{1}{2}}$$l_1 norm= \begin{Vmatrix}w\end{Vmatrix}_1=(|w_1|^1+|w_2|^1+|w_3|^1)^{\fr..

    Overfitting 방지를 위한 Dropout

    Overfitting 방지를 위한 Dropout

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다. Overfitting 방지를 위한 방법중 하나는 Dropout이다. 이는 일부 노드를 가리면서 학습시키는 방법이다. 학습 시 노드들을 랜덤하게 가려서 학습시키고,  테스트 할 때는 이 결과를 평균내서 사용한다. 이러한 개념은 layer 별로 적용한다.  위 사진처럼, 학습 시에는 $p$의 확률로 노드를 살린다. 이는 각 데이터가 dropout을 적용시킨 레이어에 들어갈 때마다 다시 정해진다. (데이터마다 dropout시킬 노드를 다시 고른다.) 테스트 시에는 모든 노드를 다 살린 후 weight에 $p$를 곱한다. (즉, 평균을 내는 느낌)  Dropout시 얻을 수 있는 또 다른 효과는 노드가 역할 분담을 잘 하게끔 한다는 ..

    Overfitting, Data augmentation

    Overfitting, Data augmentation

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다. 층을 깊게 쌓아 loss 함수를 꼬불꼬불하게 만들면 training data에 대해서는 성능이 좋지만, 보지 못한 데이터가 들어왔을 때 (Test data)는 잘 맞추지 못하게 된다. 이를 어떻게 해결할까? 모델이 다시 입력, 출력관의 관계를 단순하게 생각하도록 한다. (Dropout)Data AugmentationData Augmentation은 학습 데이터가 너무 적어서 생기는 overfitting 문제를 해결해준다. Data Augmentation은 데이터를 변조, 변형시켜서 데이터 우려먹기가 가능하다!

    Loss Landscape, Skip connection

    Loss Landscape, Skip connection

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.   아무리 vanishing gradient 문제를 해결한다고 해도 layer를 깊게 쌓으면 loss함수의 모양이 꼬불꼬불 해지는 Loss landscape 현상때문에 underfitting이 발생한다.  따라서 이를 skip connection으로 해결한다.  skip connection은 layer를 건너뛰고 이전 레이어의 출력과 더하는 방식이다. 이를 사용하면 Loss landscape 현상으로부터 벗어날 수 있다. 아래 사진이 skip connection을 이용했을 때의 loss function 모양이다.   그런데 위와 같은 그림을 어떻게 그릴까..? weight 벡터인 $ w=\begin{bmatrix} \vdots..

    Batch Normalization, Layer Normalization, Vanishing Gradient 해결 방안 정리

    Batch Normalization, Layer Normalization, Vanishing Gradient 해결 방안 정리

    해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다. batch size=5 일 때  해당 데이터들이 ReLU 함수를 통과하는 상황이다. 데이터들이 모두 양수일 때는 linear function을 쓰는 것과 다름이 없으며, 데이터들이 모두 음수일 때는 gradient=0이 되므로 gradient descent 문제가 발생한다.  따라서 위 그림과 같이 Activation function의 non-linear한 성질을 잘 살리고자 입력 데이터를 재조정 하는 것이 batch normalization의 첫번째 목적이다. 하지만 이 데이터들을 어디로 옮길지 어떻게 알아야 할까? 어디로 옮길지(non-linear한 성질을 잘 살리면서 vanishing gradient를 얼마나 해결하는지)..