ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Do it 자연어 처리] 2일차 언어모델의 개념과 트랜스포머
    책으로 공부하기 2023. 10. 5. 03:23

    바이트 페어 인코딩 과거와 최근 사용 용도와 장점

    - 개념 : 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 기법

    - 과거 : 정보 압축 알고리즘

    - 최근 : 자연어 처리 모델에 널리 쓰이는 토큰화 기법

    - 장점 : 사전 크기 증가를 억제하면서 정보를 효율적으로 압축하는 알고리즘

     

    문자 - 연속된 두 글자를 한 글자로 병합 초기사전
    aaabdaaabac (a,b,c,d)
    ZabdZabac (a,b,c,d,Z)
    ZYdZYac (a,b,c,d,Z,Y)
    XdXac (a,b,c,d,Z,Y,X)

    특징

    - 사전 크기가 4개에서 7개로 증가

    - 데이터의 길이 11개에서 5개로 감소

    - 따라서 BPE는 사전 크기를 지나치게 늘리지 않으면서 데이터 길이를 효율적으로 압축

     

    BPE 기반 토큰화 기법 특징과 절차

    - 특징1 : 분석 대상 언어에 대한 지식이 필요없음

    - 특징2 : 말뭉치에서 자주 나타나는 문자열을 토큰으로 분석

    - 절차 : 어휘 집합 구축 + 토큰화.(어휘집합은 고빈도 바이그램 쌍을 병합하는 방식으로 구축한다)

     

    워드피스 : 우도를 가장 높이는 글자쌍을 병합한다.

    병합후보가 a,b일 때 워드피스의 병합 기준 : E(ab) / E(a)E(b)

     

    언어모델 개념 : 단어 시퀀스에 확률을 부여하는 모델

    결합확률 P(무모, 운전) < P(난폭, 운전) 

    P(운전|난폭) = P(난폭, 운전) / P(난폭)

     

    * 참고 : 난폭 다음 운전이 올 조건부 확률 P(운전|난폭), P(결과가 되는 사건 | 조건이 되는 사건))

    P(w1,w2,w3) = P(w1)*P(w2|w1)*P(w3|w1,w2)

                          = 첫번째 단어 등장 * 첫번째 단어 등장 후 두번째 단어 등장 * 첫번째 단어 등장 후 두번째 단어 등장 후 세번째 단어 등장

                          = P(w|context)

    즉, 전체 단어 시퀀스가 나타날 확률은 이전 단어들이 주어졌을 때 다음 단어가 등장할 확률의 연쇄와 같다

    컨텍스트(주변 맥락 정보) 가 전제된 상태에서 특정 단어(w)가나타날 조건부 확률

     

    언어모델 종류

    - 순방향 언어모델

    - 역방향 언어모델

    - 마스크 언어모델

        - 개념 : 학습 대상 문장에 빈칸을 만들어놓고 해당 빈칸에 올 단어로 적절한 단어가 무엇일지 분류하는 과정

        - 대표 모델 : BERT

        - 장점 : 문장 전체의맥락을 참고할 수 있음. 양방향성을 가짐

    - 스킵-그램 모델

        - 개념 : 어떤 단어 앞뒤에 특정 범위를 정해두고 이 범위내에 어떤 단어들이 올지 분류하는 과정

        - 컨텍스트로 설정한 단어 주변에 어떤 단어들이 분포해있는지 학습함

     

    언어모델의 유용성

    1. 잘 학습된 언어모델은 어떤 문장이 자연스러운지 가려낼 수 있음

    2. 학습 대상 언어의 풍부한 맥락을 포함하고 있음

     

    언어모델의 수행가능 태스크

    1. 기계번역 P( ? | You can't be free from death)

    2. 문법교정 P(두시 삼십 이분) > P(이시 서른 두분)

    3. 문장생성 P( ? | 발 없는 말이)

     

    트랜스포머

    - 제안사 : 구글

    - 학습 방식 : 인코더와 디코더 입력이 주어졌을 때 정답에 해당하는 단어의 확률을 높이는 방식으로 학습

    - 모델 : 시퀀스to시퀀스 (시퀀스 : 단어 같은 무언가의 나열)

             시퀀스to시퀀스란

               - 개념 : 특정 속성을 지닌 시퀀스를 다른 속성의 시퀀스로 변환하는 작업

               - 주의할 점 : 소스와 타겟의 길이가 달라도 해당 과제를 수행하는데 문제가 없어야 함

               - 구성 = 인코더 + 디코더

                           - 인코더는 소스 시퀀스의 정보를 압축해 디코더로 보내는 역할

                           - 인코딩은 인코더가 소스 시퀀스 정보를 압축하는 과정

                           - 디코더가 보내 중 소스 시퀀스 정보를 받아서 타깃 시퀀스 생성

                           - 디코딩은 디코더가 타깃 시퀀스를 생성하는 과정

               - 예시) 기계 번역에서는 인코더가 한국어 문장을 압축해 디코더에 보내고, 디코더는 이를 받아 영어로 번역한다

    - 핵심 구성 요소 : 셀프 어텐션

          어텐션 : 중요한 요소에 더 집중해 성능을 끌어 올리는 기법

                       기계 번역과제에서 처음 도입됨. 타깃 언어를 디코딩할 때 소스 언어의 단어 시퀀스 가운데 디코딩에 도움되는 단어 위주로 선택해서 번역 품질을 올린다. 즉, 어텐션은 디코딩할 때 소스 시퀀스 가운데 중요한 요소만 추린다 

         셀프 어텐션 : 쿼리, 키, 밸류가 서로 영향을 주고 받으면서 문장의 의미를 계산

     

    어텐션과 셀프 어텐션 차이

    - 어텐션은 소스 시퀀스 전체 단어들과 타깃 시퀀스 단어 하나 사이를 연결하는데 쓰인다. 반면 셀프 어텐션은 입력 시퀀스 전체 단어들 사이를 연결함

    - 어텐션은 RNN 구조 위에서 동장하지만 셀프 어텐션은 RNN 없이 동작한다

    - 타깃 언어의 단어를 1개 생성할 때 어텐션은 1회 수행하지만 셀프 어텐션은 인코더, 디코더 블록의 개수만큼 반복 수행한다.

     

     

Designed by Tistory.