반응형

분류 전체보기 66

경사하강법 이해(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..

VScode 에서 keras intellicode가 잘 안될 때

Visual Studio Code를 사용할 때, 자동완성 기능의 편리함을 많이 느낍니다. Python의 경우도 VScode의 확장팩인 Visual Studio IntelliCode를 사용하여 코딩을 하면 굉장히 편합니다. 그런데, tensorflow의 keras를 이용하려고 하는데 intellicode가 아래의 사진처럼 잘 안되는 걸 느꼈습니다. 제가 pylint를 사용해서 python interactive창이 뜨게 되는데 거기서는 또 잘 되더라구요. 그래서 가끔 함수 이름을 까먹을 때 그렇게 했는데 항상 하기는 불편해서 방법을 알아봤습니다. 그렇게 해서 발견한 방법을 공유합니다. 위와같이 tensor flow_core.python.keras.api로부터 keras를 불러와서 사용을 하게 되면 자동완성이..

Embedding 이란 무엇인가 이해하기

인간의 언어(자연어)는 수치화되어 있지 않은 데이터이기 때문에 머신러닝, 딥러닝 기법을 바로 사용할 수가 없다. (수치화되어있는 데이터의 예로는 Mnist나 꽃의 종류처럼 숫자로 분류가 가능한 것들을 말함.) 그래서 자연어 처리에서 특징 추출을 통해 수치화를 해줘야 하는데 이때 사용하는 것이 "언어의 벡터화"이다. 이런 벡터화의 과정을 Word Embedding이라고 한다. 가장 기본적인 벡터화의 방법은 One-hot encoding 방법이다. 예를 들어, 남자와 여자를 표현하는 벡터를 만든다고 할 때 각각을 [1,0] [0,1]로 만드는 방법이다. 그런데 이 방법은 단어가 많아지면 벡터 공간이 매우 커지고 실제 1인 값은 한 개뿐 이므로 매우 비효율적이다. 또 이런 표현방식은 단어가 뭔지만을 알려줄 뿐..

반응형