CS/Deep Learning

    [Deep Learning] Attention 메커니즘

    [Deep Learning] Attention 메커니즘 Attention Mechanism 이란? 기존의 RNN, 즉 recurrent model에서는 문장의 순차적 특성을 유지한다. 하지만, 두 정보 사이의 거리가 멀 때 해당 정보를 이용하지 못하는 문제가 발생한다. 이 문제는 Long-term dependency problem라고 한다. 다시말해 recurrent model은 학습 시 t번째 hidden state를 얻기 위해 t-1번째 hidden state가 필요하다(=과거 정보를 이용한다.) 즉, 순서대로 계산되어야 하기 때문에 병렬 처리가 불가능하고 속도라 느리다(Parallelization). 이를 해결하기 위한 방법인 Attention이란, 모델이 중요한 부분에 집중(attention)하게..

    [Deep Learning] Recurrent Neural Network(RNN)

    [Deep Learning] Recurrent Neural Network(RNN) Recurrent Neural Network(순환 신경망, RNN) 기존의 Neural Network 알고리즘은 이미지처럼 고정된 크기의 입력을 다루는 데는 좋지만, 가변적인 크기의 데이터를 모델링하기에는 적합하지 않다. 이에 등장한 Neural Network가 RNN이다. RNN은 sequence data를 모델링 하기에 적합하다. 여기서 sequence data란 데이터 집합 내의 객체들이 어떤 순서를 가진 데이터를 의미한다. 예시로는 음성신호, 자연어 문장 등이 있다. RNN은 이러한 sequence data를 처리하기 위해 이전 출력값이 현재 결과에 영향을 미치는 구조로 설계한다. 즉, 이전 데이터에서 새로운 입력이..

    [Deep Learning] 합성곱 신경망 (Convolution Neural Network, CNN)

    [Deep Learning] 합성곱 신경망 (Convolution Neural Network, CNN) 합성곱 신경망 (Convolution Neural Network, CNN) 기존의 방식인 Fully-connected Neural Network의 입력은 항상 1차원 배열이다. 또한 모든 값들이 완전 연결되어 있으므로 전체 픽셀의 모든 관계를 다 계산 해야한다. 이렇게 이미지의 3차원 배열 형상(x, y, RGB)을 무시하고 1차원 배열로 flatten해서 학습하면 여러문제가 생긴다. 이미지의 전체적인 관계를 고려하지 못해서 변형된 데이터에 매우 취약하다는 것(Topology)과, 이미지의 특정 픽셀은 주변 픽셀과 관련이 있다는 특성을 잃어버린다는 것(Locality)(이 경우 이미지를 조금만 변형해도..

    [Deep Learning] 가중치 초기화 & Check Point

    [Deep Learning] 가중치 초기화 & Check Point 가중치 초기화 (Initialize Weights) 초기 가중치 값은 딥러닝 학습에서 중요한 문제다. 가중치 설정을 잘못할 경우 Vanishing Gradient 등 문제를 야기할 수 있기 때문이다. 그럼 이러한 초기 가중치를 설정하는 방법들을 알아보자. Randomly # Random normal w1 = tf.Variable(tf.random_normal(shape=[784, 256])) Uniform distribution # Random uniform w2 = tf.Variable(tf.random_uniform(shape=[784, 256])) Xavier 가장 성능이 뛰어난 weight 초기화 값 # Xavier w3 = tf..

    [Deep Learning] Auto-Encoder

    [Deep Learning] Auto-Encoder Auto-Encoder 오토인코더(Autoencoder)는 단순히 입력을 출력으로 복사하는 신경망이다. 모델은 아래와 같다. 윗부분이 input, 아랫부분이 output이다. 사이의 파란선 부분은 encoder, 빨간선 부분은 Decoder이다. input = output으로 만들어주어야한다. Auto-encoder의 4가지 특징 Data Compression 데이터 압축 Data Visualization 데이터 가시화 Curse of dimensionality 차원의 저주 해결 : 우리는 고차원에서 일어나는 문제점을 알 수 없다. 다라서 고차원에 맞게 data mapping을 하려면 많은 data가 필요하다. Discovering most import..

    [Deep Learning] Optimizer

    [Deep Learning] Optimizer Optimizer란 loss function을 통해 구한 차이를 사용해 기울기를 구하고 Network의 parameter(W, b)를 학습에 어떻게 반영할 것인지를 결정하는 방법이다. 위의 많은 종료의 optimizer중에 몇가지만 자세히 알아보자. Gradient Descent(GD) 1회의 학습 step시에, 현재 모델의 모든 data에 대해서 예측 값에 대한 loss 미분을 learning rate만큼 보정해서 반영하는 방법. gradient의 반대 방향으로 일정 크기만큼 이동해내는 것을 반복하여 Loss function의 값을 최소화하는 θ의 값을 찾는다. optimizer = tf.train.GradientDescentOptimizer(learnin..

    [Deep Learning] Dropout

    [Deep Learning] Dropout 앞에서 overfitting을 완화시키는 방법 중 하나인 Regularization을 알아보았다. 이번엔 또 다른 방법인 Drop-Out을 보자. regularization이 cost function에 penalty 함수를 추가하고 그 penalty 부분에 대한 조작을 통해 결과를 얻는 방식이라면, dropout은 망 자체를 변화시키는 방식이기 때문에 둘은 근본적으로 다르다. Dropout 일반적으로 신경망에서 hidden layer의 개수가 많아지면(=DNN이 되면) 학습 능력이 좋아지지만 망의 크기가 커지면 커질수록 overfitting에 빠질 가능성이 높아지고 시간도 길어진다. 이렇게 망의 크기가 커질 경우 사용할 수 있는 방법이 dropout이다. dro..

    [Deep Learning] Regularization

    [Deep Learning] Regularization Regularization에 대해 자세히 알아보려면 Overfitting이 무엇인지 알아야한다. 그럼 Overfitting과 더불어 Underfitting 까지 알아보자. Overfitting 한 data set에만 지나치게 최적화된 상태 아래 그래프처럼 학습 데이터에 대해서는 오차가 감소하지만 실제 데이터에 대해서는 오차가 증가하는 지점이 존재할 수 있다. 다시 말해 overfitting은 학습데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가할 경우 발생한다. Underfitting Underfitting 이란 모델이 너무 간단하기 때문에 학습 오류가 줄어들지 않는 것이다. 그렇다면 Overfitting을 완화시키는 방법에는 어떤것들이..