본문 바로가기

분류 전체보기

(111)
나는 참 행복한 사람입니다. [-0.35232704877853394, 0.03360036760568619, 0.28237447142601013, 0.2977522015571594, -0.332926869392395, -0.046478450298309326, 0.4701286256313324, -0.07853178679943085, 0.46118053793907166, -0.3647645115852356, 0.7239242792129517, -0.6214002370834351, -0.874954104423523, 0.1596970111131668, 0.30314022302627563, -0.04812156409025192, 0.6440160274505615, 0.5457267761230469, -0.22784945368766785, ..
정사영, 벡터의 크기 정사영은 무슨 뜻인지 찾아봐야 하고 벡터의 크기는 좌표평면에 그렸을 때 길이처럼 느껴졌다 내적은 벡터 간 곱셈이고,내적의 결과는 벡터 간의 관계성을 보여준다.
토크나이저와 워드 임베딩 이해한게 맞는지 모르겠다... GPT 없이 어떻게 살았지 예전엔 일단 '워드' 임베딩은 과거의 기술이라고 봐야할 듯 하다. Word2Vec, GloVe 등은 토큰 자체의 벡터값을 서로 유사도에 따라서 설정하게 된다. 이 경우 동음이의어가 문제가 될 수 있을 것 같다. 반면 이제는 '임베딩'만 한다. pre-trained tokenizer은 SentencePiece, WordPiece 등을 활용하여 토큰화 한다. 그리고 모델이 알아들을 수 있게 입력값을 벡터 형태로 변경해준다. pre-trained라고 하지만, neural network가 개입하지는 않는다. 워드 임베딩은 의미 단위로 토큰화 한 후, 숫자로 인코딩하는 과정에서 토큰 자체에 내용의 의미가 반영된다. 반면, pre-trained tokeniz..
hugginface & pytorch 함께 어떻게 쓸까 결론. pytorch의 DataLoader을 활용하고, huggingface의 pretrained 모델을 pytorch 모델에 전달하여 활용하자. pytorch 모델을 huggingface의 trainer에 적용해보려고 했는데, 잘 되지 않았다. 하려면 시간이 더 필요한데, 한다고 해서 그렇게 파급력이 있을 것 같진 않다. 지금 보기에 최선은 huggingface의 모델을 들고오고, 훈련과 inference는 pytorch로 활용하는 것이다. tokenizer을 바로 모델에 넣을 수 있게끔 해보려 했는데, 잘 안됐다. 모델을 활용함에 있어 먼저 해야하는 것은 입출력을 파악하는 것이다. 모델을 모르는 상태에서 huggingface의 ~~ForSequenceClassification 등의 편의 API를 활용..
서브워드 토크나이저 vs. 워드 임베딩 두개가 같은 개념으로 알고 있었다. 시간이 갈수록 바닥만 보인다... 배울건 너무 많고. 언제쯤이면 1인분을 할 수 있을까? 서브워드 토크나이저는 Byte pair encoding, WordPiece, SentencePiece 등이다. 단어가 여러 의미의 어근(?)으로 이루어져 있는 경우, 예를 들자면 bidirectional이다. bi는 2개의, direct는 방향, -ion은 명사, -al은 형용사(맞나) 등으로 말이다. 예시가 제대로 들었나 모르겠지만, 의도는 통했으리라 생각하니 대충 넘어가자. 아무튼 토크나이저는 숫자로 바꿔주는 것이 아니다. 의미를 가진 가장 작은 단위로 바꾸고자 하는 도구가 토크나이저인 것이다. 워드 임베딩은 그 이후에 따라온다. 글자의 문맥에 따라 유사도를 평가하는 것이다. ..
양방향 LSTM, Transformer 조금 어쨌거나 Attention is all you need가 등장하기 전까지는, 자연어 처리에서는 LSTM을 썼던 것이다. 특성 상 순서가 중요하기 때문에. 양방향 LSTM은 어떤 의미를 지닐까? 개인적 추측으로는 일방향 순서를 양방향으로 봄으로써, 신경망이 토큰 간 관계를 더 잘 파악할 수 있게끔 했다는 점이 아닐까 싶다. 책에서는 바다나우 어텐션의 구현이 중요한 듯 하다. transformer에서는 scaled dot product attention을 활용하고 있다. 바다나우 어텐션은 신경망을 활용하는데, 어텐션에서 신경망을 활용해볼 기회여서 있지 않았나... 하는 단순한 추측. 생각해보니 transformer의 셀프 어텐션 부분에서도 가중치를 활용했는데. 모든 어텐션이 가중치를 활용하는건가? dot p..
바다나우 어텐션 다들 은닉층 시점을 루옹 어텐션과의 차이점으로 이야기하던데... 내가 느낀 더 큰 차이점은 가중치였다. 바다나우 어텐션은 내부에 학습 가능한 가중치가 있다. 프로그래밍으로 말하자면, keras로 구현 시 Dense 레이어가 있다는 것이다. 또 새롭게 배운 하나는... query, key, value였다. 이전 페이지를 읽을 때에는 그냥 그런가보다~ 하고 넘어갔는데, 지금은 약간의 윤곽이 잡힌다. 루옹 어텐션의 경우, 그리고 어텐션 기반 seq2seq의 경우 query는 디코더의 은닉층을 의미하고, key는 인코더의 은닉층을 의미한다. value는 query와 key를 통해 계산된 attention value가 된다. 루옹의 경우, value값이 query와 key값의 곱으로 계산된다. reference ..
어텐션 메커니즘 대충 LSTM으로 이루어진 인코더-디코더 네트워크가 있다고 하자. 입력 문장이 4개의 벡터로 토크나이징되었다고 하면, 인코더는.. 아마 4개겠지? 그리고 토큰으로 기계번역된 문장이 시작된다. 2번째 벡터까지 잘 예측했다고 가정하고, 3번째 벡터예측을 한다. 어텐션 메커니즘의 핵심은 기존 문장을 다시 보는 것이다. 인코더에서 사용된 은닉층과 현재 3번째 은닉층의 벡터를 곱하여 어텐션 스코어를 산출하고, 어텐션 스코어에 소프트맥스를 취해 어텐션 분포를 구한다. 이 어텐션 분포는 인코더에 입력된 각 토큰과 디코더에서 예측하고자 하는 토큰의 관계를 확률 분포로 표현한다. 그리고 어텐션 분포와 인코더의 은닉층을 곱하여 더하면 이것이 컨텍스트 벡터가 된다. 이 컨텍스트 벡터와 예측하고자 하는 토큰에 해당하는 디코더의 ..