Web Analytics Made Easy - Statcounter

Bouncing ideas 생각 작업실/lexical subclassing

transformer model attention weights 비교분석

sleepy_wug 2024. 6. 14. 10:24
반응형

목차

     

    - 우당탕탕 이론언어학 연구자가 fairseq 입문한다

    - cross-attention 쉽게 접근하기

    - 신경망 이용한 음운론 연구 프로그램

    에서 이어지는 글입니다.

     

    1. heatmap은 보기만 좋을 뿐

    Attention weights를 다 구하면 일단 아래와 같이 encoder-decoder cross attention weights 전체를, 각 layer와 각 head에 대해 heatmap으로 시각화할 수 있다. 

     

     

    위 그림은 의미가 없는 한국어 단어 "음월장"에 대하여 기계가 L-Tensification (ㄹ경음화)을 적용시켜 발음형을 "[음월짱]"이라고 도출해낸 이유를 설명하기 위한 heatmap이다. Output token 중 ㅉ에 해당하는 cc 부분을 보면, (c가 아니라) cc를 생성할 때 앞선 token인 "ㅓ"에만 집중을 했다.

     

    이자체로는 의미가 없기 때문에, baseline을 놓고 대조/비교해야 한다. 즉, baseline에 비해 더 많이 혹은 적게 attention을 주었다는 게 의미가 있는 것이다.

     

    attention을 주었다는 건 뭘까?

     

    2. You got me looking for attention 

    https://youtu.be/CHp0Kaidr14

     

     

    예전에 적은 바와 같이 음운규칙 적용은 NLP task로는 translation task이다.

    [도출은 곧 번역]

     

    좌충우돌 딥러닝을 이용한 한글IPA변환기

    0. 들어가는 말한글을 입력하면 철자 그대로 충실히 IPA로 자동 전사하는 '기계'에 대해서는 다른 글에서 소개하였습니다. 본 글에서는 거기에서 한걸음 더 나아가 transformer 모델을 이용해서 한글

    linguisting.tistory.com

     

    출발어:도착어=UR:SR 의 도식이다. 일단 translation task의 맥락에서 생각한다음 그걸 음운론적으로 다시 생각해보자. '번역'을 하는 transformer model은 도착어의 단어를 각각 순차적으로 생성해내는데, n번째 단어를 생성할 때 다음 3가지를 고려한다.

     

    1. 출발어 전체 encoder tensor
    2. 도착어 (n-1)번째 단어까지의 decoder tensor
    3. 지금 생성할 단어와 출발어 전체단어 간의 cross-attention

     

    이제 음운론적 맥락으로 가져와보자. /a k t a/ 에 한국어 음운규칙 장애음뒤경음화(POT)를 적용한다고 치자.  이때 a, k, t, a 각각은 NLP translation task로 치면 단어에 해당하고 a k t a 전체는 문장이다. transformer 모델은 [a..] -> [ak...] 이런식으로 한 음소씩 SR을 생성한다. 그리고 궁극적으로는 [a k t* a]를 도출해내야한다.

     

    자 이제, 모델이 [ak..] 까지 생성을 마치고 SR의 3번째 음소를 생성할 차례라고 하자. 이때 모델은 아래 3가지를 고려한다.

     

    1. /a k t a/전체 encoder tensor
    2. [a k] 까지의 decoder tensor
    3. /a k t a/ 에 있는 각 음소 + <EOS> (종결문자) 각각에 대한 cross-attention. 풀어쓰자면...
    /a/에 대한 attention weight인 w_1, /k/에 대한 attention인 w_2, /t/에 대한 attention인 w_3 /a/에 대한 attention인 w_4, <EOS>에 대한 attention인 w_5. where, w_1 + w_2 + w_3 + w_4 + w_5 = 1

    만약 이 모델이 한국어 음운론을 제대로 학습했으면, t를 생성할 때 바로 앞 음소의 '눈치'를 봐야한다. 즉 앞 음소가 장애음인지 눈치를 본다음 장애음이면 경음화를 해야 할 것이다.

     

    바로 이때 "앞 음소 눈치를 본다"를 attention weights의 개념으로 말하면 "w_2의 값이 크다"고 할 수 있다. t를 t* 라는 정답으로 도출하는데 가장 큰 영향을 주는 것은, 단어 첫 음소도 아니고, 단어의 길이도 아니고, 바로 입력형 2번째에 있는 /k/가 장애음인지 아닌지 여부이기 때문이다.

     

    내 모델은 훈련이 잘 되었기 때문에 아마도 제대로 제대로 눈치를 볼 것이다. 문제는 "w_2의 값이 크다"라는 걸 어떻게 실증적으로 보여주느냐이다.

     

    정답은 POT가 적용되지 않는 사례들을 baseline으로 삼으면 된다는 것이다. 

     

    3. 모음은 자음에 관심을 주지 않는다

    /a k t a/ -> [a k t* a]의 도출과 비교할 만한 사례는 아마도 /a k e i/ -> [a k ej i]일 것이다.

     

    똑같이 3번째 segment를 도출하더라도, /a k t a/의 사례의 /t/는 앞 segment k의 눈치를 보아 경음화여부를 결정해야하는데, /a k e i/의 사례에서의 /e/는 앞 segment k의 눈치를 전혀 보지 않는다. /e/->[ej]의 도출에 있어서 k는 전혀 진짜 전혀 상관이 없기 때문이다. 

     

    따라서 /a k t a/ -> [a k t* a] 사례의 w_2 값은 /a k e i/ -> [a k ej i] 사례의 w_2 값보다 훨등히 클 것이 예상된다. 그리고 이것이 "모델이 POT를 잘 학습하였다"라는 결과를 실증하는 것이다.

     

    4. L-Tensification에는?

    POT는 매우 선명하고 쉬운 음운규칙이다. 장애음 뒤에서는 경음화 가능한 음소를 무조건 경음화하기 때문이다.

     

    그렇다면 이 글의 첫머리의 "음월장" [음월짱], 즉 L-Tensification ㄹ경음화의 사례는 어떤가? 이건 미묘하다. ㄹ뒤에 나오는 게 경음화되는 건 맞는데, [CORONAL]인 ㅈㄷㅅ만 ㄹ경음화를 겪을 수 있다. 그리고 선행연구처럼 "한자어 2음절 단어"만 경음화된다. 

     

    따라서 /음월장/ 을 [음월짱]으로 도출하는 등의 ㄹ경음화를 모델이 정확하게 적용하기 위해서는 배워야할 게 많다. "한자어" 같은 어원 기반 어종은 훈련데이터에 넣지 않았다. 그럼에도 불구하고 기계는 어떤 때 ㄹ경음화를 적용하고 어떤때는 적용하지 않았다.

     

    "음월장"의 사례를 3에서 설명한 과정처럼 비교분석하여, "ㅈ" 음소의 attention weights를 비교한다면, 일단 ㄹ의 눈치를 볼 것은 확실하다. 정말 재밌는 건 그 이면이다. 1. ㄹ경음화의 target이 되는 ㅈㄷㅅ를 범주로 묶을 수 있나? 2. UR의 다른 어떤 부분에 관심을 가지나?

     

    1. ㅈㄷㅅ 범주

    ㅈㄷㅅ를 기술하는 자연부류는 여러개의 자질로 구성된다. default한 경음화 대상 자음들과 달리 이것들을 별도로 취급해 독특한 attention pattern을 보인다면 아마 모델은 ㅈㄷㅅ 자연부류를 학습하였을 것이고, 이 정보를 ㄹ경음화에 이용한다고 말할 수 있을 것이다.

     

    2. UR의 다른 어떤 부분에 관심?

    박나영 (2020) 에서는 한자어와 고유어의 음소배열적 특성을 MaxEnt style의 제약으로 제시했다. 예컨대 ㅎ로 시작하는 단어는 한자어에서 월등히 높고 고유어에서 적다. 양순음 뒤에 'ㅡ' 모음이 오는 경우는 고유어가 좀더 빈번하다. (정확한 팩트는 잘 기억 안남)

     

    만약 이 기술이 ㄹ경음화에 적용된다면, 다시말해서 어원적으로 결정된 모습이 ㄹ경음화를 결정짓는다면, 기계는 ㄹ뒤에 나오는 자음을 경음화할지 말지 선택할 때, 단어가 ㅎ로 시작하는지를 고려할 것이고 또 양순음 뒤에 ㅡ 모음이 왔는지 고려할 것이다. 

     

    그러나 아래 그림은 좀 다른 이야기를 한다. Grid 1은 ㄹ경음화가 적용될 잠재적 환경을 가지고 있는 단어들이 포함된다. Grid 2는 이 단어들과 음절구조가 동일한데 의도적으로 ㄹ경음화 적용 환경을 피해 구성했다. 

     

    attention weights의 분포가 Grid 1과 Grid 2 사이에 아주 갈린다.

     

    이를 해석하자면, ㄹ경음화가 됨직한 단어를 마주했을 때, 기계, 구체적으로 Layer0 Head0는 제1음절의 모음이 뭔지 눈치를 본다. 이것이 Grid1의 attention pattern으로 반영된다. 반면 입력형이 ㄹ경음화 환경을 안 가지고 있으면 그 눈치보기를 안한다. 이것이 Grid 2에서 대다수 token들이 제1음절의 모음에 0의 attention을 주었다는 오른쪽 히스토그램으로 반영된 것이다.

     

    이것은 단편적인 데이터지만, 이것만 주어진 상황에서 내릴 수 있는 가장 타당한 판단은, 제1음절의 모음이 ㄹ경음화의 적용 여부를 좌우한다는 것이다. 그리고 한걸음 더 나아가 ㄹ경음화가 적용된 사례들에서 제1음절의 모음이 뭐였는지, 그리고 ㄹ경음화가 안 적용된 사례들에서 제1음절의 모음이 뭐였는지를 살펴보면, 이 모음의 차이가 ㄹ경음화를 결정했다고 결론을 낼 수 있다.

     

    딥러닝 블랙박스는 이렇게 보는 것이다. 그리고 앞 문단의 빨강 강조된 '차이'라는 게 음운론이, 특히 자질과 자연부류 개념을 이용해서, 가장 잘 말할 수 있는 부분이다.  음운론 연구자로서 할수있는 '아무말'은 high vs non-high일지 모른다는 것이다. 그리고 high vowel일 경우 뒤이은 ㄹ경음화 환경에서 경음이 나올 동기는 laryngeal configuration으로 설명이 가능하다. phonetically based한 설명이다. 그러나 아닐 수 있다. 만약 그렇다면 실제단어의 코퍼스로 다시 돌아가야 할 것이다. 높은 확률로 기계는 실제단어의 코퍼스 패턴을 답습하고 있을 것이기 때문이다. 

     

     


    • 글이 유익하셨다면 후원해주세요. Toss (국내결제) || BuyMeACoffee(해외결제카드필요)
    • 아래에 댓글창이 열려있습니다. 로그인 없이도 댓글 다실 수 있습니다.
    • 글과 관련된 것, 혹은 글을 읽고 궁금한 것이라면 무엇이든 댓글을 달아주세요.
    • 반박이나 오류 수정을 특히 환영합니다.
    • 로그인 없이 비밀글을 다시면, 거기에 답변이 달려도 보실 수 없습니다. 답변을 받기 원하시는 이메일 주소 등을 비밀글로 남겨주시면 이메일로 답변드리겠습니다.

     

     

     

    반응형