반응형

머신러닝&딥러닝 52

Mean Squared Error VS Cross Entropy Error

DNN에서 Loss Function을 사용할 때 아래의 2가지 가정에 적합해야 한다. 1) Train data에서의 Loss 총합은 개별 데이터 Loss의 합과 같아야 한다. $$L(\theta_{k}, D) = \sum_{i}L(\theta_{k} ,D_{i})$$ 2) DNN 출력 값으로 Loss를 계산한다. (중간 단계에서의 값으로는 계산하지 않음.) $$\bigtriangledown L(\theta_{k},D) = \sum_{i}\bigtriangledown L(\theta_{k}, D_{i})$$ Mean Squared Error(MSE)와 Cross Entropy Error(CEE)를 Loss Function으로 많이 사용하는 이유는 위의 두 조건을 만족하는 대표적 함수이기 때문이다. 이번 글..

경사하강법 이해(2) - Learning Rate란?

이번에는 경사하강법을 이용해 최적화를 할 때 Learning Rate(학습률)을 사용하는 이유를 알아 볼 것이다. 경사하강법은 이전 글에서 작성한 것처럼 Loss값을 줄이는 과정으로 파라미터를 업데이트하는 과정인데 이를 수식으로 작성하면 다음처럼 표현할 수 있다. $L(\theta+\Delta \theta) < L(\theta)$ 위의 조건의 만족되면 Loss가 계속 줄어가는 것이니 학습이 잘 되는 것이다. $L(\theta+\Delta \theta)$ 를 Taylor 정리를 사용하면 다음과 같이 나타낼 수 있다. $$L(\theta+\Delta \theta) = L(\theta) + \bigtriangledown L * \Delta \theta + \frac{1} {2}\bigtriangledown^{..

논문 리뷰: DCGAN(Deep Convolutional GAN)

"UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS"(2015) - Facebook AI Research https://www.tensorflow.org/tutorials/generative/dcgan GAN이 발표되고 1년 반 뒤에 Convolution을 깊게 쌓아 더 안정적으로 학습시킬 수 있는 DCGAN이 발표되었다. GAN은 생성자(Generator)와 판별자(Discriminator)가 경쟁을 하며 학습을 시키는 구조로 이전까지와는 다르게 2개의 모델을 학습시키게 된다. DCGAN은 이전의 GAN을 더 발전시킨 구조를 제안한 논문으로 유명하여 읽게 되었다. 모델 핵심 이 모델에서 ..

논문 리뷰: Attention을 활용한 시계열 예측 A Dual-Stage Attention-Based Recurrent Neural Network for Time Series Prediction

"A Dual-Stage Attention-Based Recurrent Neural Network for Time Series Prediction"(2017) - Yao Qin et al. https://dacon.io/competitions/official/235584/overview/ 이번 글에서는 Attention 기법을 Encoder와 Decoder에서 두 번 사용하는 Dual-Stage Attention 기반의 RNN을 이해하고 구현해 볼 것이다. 참고한 논문에서는 주가 데이터를 이용하여 모델을 사용하였지만 여기서는 Dacon에서 주관하는 온도 추정 경진대회의 데이터를 사용하였다. 데이터 설명 온도 추정에 사용되는 변수는 40가지이며 각각의 데이터는 다음과 같은 8개의 분류로 5개씩 존재한다. ..

Transformer(4) - 모델의 학습과정 정리

Transformer는 기존의 모델들과 달리 CNN의 Convolution이나 RNN의 Cell들을 이용하지 않아 낯설게 느껴져서 다시 한번 모델의 총과정을 리뷰한다. Transformer의 Input data로 Embedding 된 벡터를 넣어주는데 이때 들어가는 벡터에 Positional Encoding 방법으로 벡터의 순서를 표시해준다. 다음으로 Multi-Head Attention에서 self-attention을 수행해주고 단어 간의 관련도를 계산해준다(query, key, value가 모두 같은 sequence가 된다). 이 과정이 Transformer의 성능을 끌어올리는 핵심이다. Attention의 내적연산으로 같은 문장 내 단어끼리의 의미적, 문법적 관계를 포착해내는 중요한 과정이다. Mu..

Convolution Neural Network 원리와 구조 이해

Convolution의 핵심은 kernel을 사용하여 각 요소별 가중치를 줘서 특징을 추출한다는 것이다!! 컨볼루션에 관해서는 간단한 예시들로 이해를 하는 것이 좋다. Convolution은 한국어로 합성곱으로 번역된다. 말 그대로 '곱해서 더한다'라고 직관적으로 생각하면 된다. 이때 사용하는 것이 커널인데 Kernel은 [ 1, 2, 0, 1]과 같은 배열의 형태가 될 수 있다. 예를 들어 1차원의 data가 [1,4,6,7,4]이고 kernel이 [1,1,1] 일 때, [ (1+4+6)/3 , (4+6+7)/3 , (6+7+4)/3 ] = [11/3, 17/3, 17/3]의 결과가 나올 것이다. 이처럼 data에 커널을 통과시키면 데이터 크기가 작아지며 특징을 추출하게 된다. 이런 기법을 어디 사용할..

경사하강법 이해(1)

인공지능 모델의 전체적인 과정을 보면 다음과 같다. 데이터 입력 => 파라미터(weight, bias)를 통한 output 도출 => loss값 생성(label값과 prediction값의 차이 이용) => loss를 줄기 위해 기울기를 이용한 최적화(경사 하강법 적용, parameter 갱신) * loss를 구하고 경사하강법을 적용하는 것이 모델 학습의 핵심이다. 파라미터 weight과 bias를 이용하여 x를 input으로 주었을 때, H(x)=Wx+b의 output을 내게 된다. 이때 H(x) 값과 Label값을 비교하여 Loss를 생성한다. 대표적인 Loss 함수 Mean Squared Error를 이용한다고 했을 때, 식이 다음과 같다. MSE = Mean((H(x)-Label)^2)/2 = Me..

Transformer(3) - Positional Encoding, Position-Wise Feedforward, Residual connection

Transformer의 핵심인 Multi-Head Attention을 모두 알아보았고 남은 Feed forward, Residual Connection, Positional Encoding에 대해 알아볼 것이다. Transformer는 입력값을 줄 때, RNN과 달리 입력을 순차적으로 주지 않는다. 따라서 시퀀스 정보를 넣어줘야 하는 문제가 생긴다. 이 문제를 해결한 것이 Positional Encoding이다. Positional Encoding의 기본적 메커니즘은 Embedding 된 input과 같은 크기의 벡터를 각각에 더해줌으로써 상대적인 위치정보에 대해서 알려주는 것이다. 이 포지셔널 인코딩은 보통 sin,cos을 이용하여 계산하는데 식은 다음과 같다. pos는 전체 시퀀스에서 몇번째 단어(임..

Transformer(2) - Multi head attention

Multi-head-attention은 앞에서 알아본 Scaled Dot-Product Attention을 여러 개 만들어 다양한 특징에 대한 어텐션을 볼 수 있게 한 방법이다. 즉, 입력받은 query, key, value를 헤드 수만큼 나누어 병렬적으로 계산해주는 것이 핵심이다! 과정은 다음과 같다. 내적 셀프 어텐션에서 본 query, key, value를 헤드 수만큼 나누어 Linear layer를 통과시키고 내적 어텐션을 구해 합치는 과정을 거친다. 마지막으로 선형층을 거쳐 나오면 멀티 헤드 어텐션이 끝나게 된다. 총구조를 보면 아래와 같다. 처음 Linear Layer를 이용해서 Q, K, V의 차원을 감소하며 Query와 Key의 차원이 맞지 않을 경우 맞추는 역할을 한다. 마지막 Linea..

Transformer(1) - Scaled Dot-Product Attention

Transformer를 이해하기 위해서는 우선 Self attention에 대한 이해가 필요하다. 셀프 어텐션은 문장에서 각 단어끼리 얼마나 관계가 있는지를 계산해서 반영하는 방법이다. 즉, 셀프 어텐션으로 문장 안에서 단어들 간의 관계를 파악할 수 있는 것이다. 예를 들어, '나는 자연어 처리를 즐겨한다.'라는 문장에서 '자연어'라는 단어에 대해 관계를 측정한다. 이때, 밑의 표처럼 나왔다고 하면 각 단어에 대한 어텐션 스코어가 나온다. 어텐션 스코어는 각 단어 간의 관계를 측정한 값이고 어텐션 스코어 값을 하나의 테이블로 만든 것을 어텐션 맵이라고 부른다. 나는 자연어 자연어 자연어 처리를 자연어 즐겨한다 자연어 Dot product Dot product Dot product Dot product 0..

반응형