2023-07-18

李宇衍 - Wonyong Sung 선생님 글을 읽고, ChatGPT라는 인공지능과 이야기해보았다.


Wonyong's post
Wonyong Sung

  · 
지금 부터 ChatGPT의 기술 설명 (1) - 구조

ChatGPT는 지금까지 본 것처럼 다양한 기능을 가지고 있습니다.  번역도 하고, 백과사전 역할도 하고, 연애편지도 써 달라고 하면 잘 써줍니다. 어떤 사람은 논문작성에 사용도 할 것입니다.  그러면 내부구조가 어떻게 되었을까 궁금합니다.  종래의 SW라면 내부에 각각의 기능을 하는 Software block (이를 function이나 모듈이라 합니다)이 있을 것입니다.  즉, 번역, 백과사전, 글쓰기 등의 software block 이 있어야 합니다만, 인공신경망 구조는 이렇게 기능별 구분이 없고 매우 단순합니다.  아인슈타인은 사후 뇌를 기증했다고 하는데, 아마 아인슈타인의 뇌와 보통 사람의 뇌가 근본적으로 차이나는 것은 없었을 것입니다.  인공신경망 내부의 SW구조는 매우 단순합니다.  단지 이것을 어떻게 훈련하여 내부의 파라미터 값(인간 두뇌의 시냅스의 연결강도)을 바꾸는가에 따라 다양한 기능을 합니다. 그래서 학생들하고 인공신경망 연구를 하면, 초보 학생일 수록 어떻게 신경망 구조를 바꾸어서 좋은 성능을 낼까를 많이 생각합니다. 나는 대신에, 어떻게 하면 좋은 훈련데이터를 만들고, 또 좋은 훈련기법을 찾을까에 집중하라고 주문합니다.  인공신경망 구조도 몇년에 한번씩은 획기적인 것이 나오는데, 점차 갈 수록 선택지가 줄어들고 있습니다. 요즘은 컴퓨터비전부터 언어, 음성인식에 이르기까지 Transformer라는 인공신경망 구조가 대세를 이루고 있습니다.  

전에 제가 언어모델에 대해 설명한 적이 있습니다.  (아래 댓글에 링크) 언어모델은 지금까지 들어온 텍스트를 바탕으로 다음에 나올 단어를 예측합니다.  이 언어모델을 이용해서 예측된 글자를 선택하면 (이때 random number를 발생시켜 확률에 맞게 선택) 또 글쓰기가 된다 하였습니다.  ChatGPT의 모체가 되는 GPT는 Transformer라는 인공신경망으로 만든 언어모델입니다.  Transformer는 앞의 단은 좌우로 넓게 관련되는 의미의 단어가 있는지 찾는 self-attention layer 그리고 그 다음은 신경망 뭉치가 있는 아주 단순한 구조입니다.  I am going to church on Sunday.  하면 self-attention에서는 I-am-going을 연결해서 보고, 또 church - Sunday 를 연결해서 보는 식입니다.  신경망 뭉치는 이것들을 통합된 벡터로 만들어줍니다.  

우선 GPT의 동작을 보면 이 Transformer로 된 LM에 질문을 넣습니다. 그러면 아직 대답이 나오지는 않습니다.  그런데 들어간 질문은 내부에서 생각벡터(thought vector)로 바뀌어져서 저장이 됩니다.   벡터는 어떤 숫자의 모임입니다.  수천개가 넘는 숫자로 바뀌어서 저장이 됩니다.  그리고 질문이 끝나면 전에 언어모델에서 설명한 것처럼 꼬리에 꼬리를 무는 방식으로 답이 되는 글자를 생성합니다. 단지 글자를 생성할 때 이 저장된 생각벡터를 계속 의식하면서 그에 맞는 답을 생성합니다. 중요한 것은 이 단순한 구조를 가지고 번역이든 편지쓰기든 가리지 않고 다 합니다.  

ChatGPT는 지금까지 대화를 다 기억해서 그것을 고려한 답을 한다고 합니다.  그러면 내부에 지금까지 대화에서 나왔던 생각벡터를 전부 기억해야 할 것입니다. 그 밖에는 달라질 것이 없습니다.

더 자세한 설명이 필요하시면 아래 comment에 제가 전에 쓴 언어모델의 구조를 보시기 바랍니다. 다음에는 어떻게 훈련을 하는가에 대해서 설명하겠습니다.  훈련방법이 중요합니다.

Comments
Wonyong Sung


李宇衍 - Wonyong Sung 선생님 글을 읽고, ChatGPT라는 인공지능과 이야기해보았다. 분명히 이것이 지가... | Facebook

李宇衍

  · 
Wonyong Sung 선생님 글을 읽고, ChatGPT라는 인공지능과 이야기해보았다. 분명히 이것이 지가 앞서 한 말을 의식하는 것은 사실로 보인다.

위안부 문제였는데, 내 연속되는 첫 번째 질문과  두 번째 질문에 대한 답이 모순되어 보이는데, 아직 그거는 안 해봤다. 

여러분도 해보시라.
아래가 예시.

나. 증언은 증거가 뒷받침되어야 법정에서도 유효합니다. 증거가 없는 증언이 효력이 있으려면 최소한 일관성이라도 갖춰야 합니다. 이것은 법정에서만 아니라, 학문에서도 마찬가지입니다. 그런데 일본군 위안부들은 자신들이 강제로 연행되었다고 증언했습니다. 그러나 그것을 입증하는 객관적인 증거는 전혀 없습니다. 또 강제연행되었다고 주장하는 사람들의 증언에는 일관성이 없습니다. 예를 들어, 전 위안부 이용수는 처음에는 "붉은 원피스와 가죽구두가 좋아서 따라갔다"고 말했는데, 그 몇년 뒤부터는 군복을 입은 사람들이 입을 막고 총칼과 비슷한 것을 사용하면서 강제로 끌고갔다고 말했습니다. "강제연행"이라고 말하는 다른 위안부들의 증언도 이와 같습니다. 그래도 그들의 증언을 믿어야 합니까?

ChatGPT: 증언은 증거가 뒷받침되어야 유효한 경우가 많습니다. 증거가 없거나 일관성이 없는 증언은 유효한 경우가 적습니다. 그러나 위안부 이야기에서는 증거가 적거나 없는 경우도 있기 때문에, 위안부 이야기에 대한 증언을 믿기 위해서는 추가적인 증거를 찾거나, 이미 존재하는 증거를 적극적으로 검토해야 합니다. 증거가 없는 상황에서는 증언을 용인하기 어렵기 때문입니다. 그래서 이러한 상황에서는 증언을 조심스럽게 고려하고, 다른 증거와 함께 검토해야 합니다.

나: 지난 30년동안 그러한 작업을 했지만 강제동원의 증거가 밝혀지지 않았는데, 어떻게 해야 합니까?

ChatGPT: 강제동원에 대한 증거가 30년간 발견되지 않은 경우, 이는 증거가 없는 것을 의미할 수 있습니다. 그러나 이것은 증거가 전혀 없다는 것을 의미하지는 않습니다. 증거는 시간이 지나면 소멸할 수 있거나, 잃어버려질 수 있습니다. 증거를 찾기 위해서는 정보를 수집하고, 이미 존재하는 증거를 적극적으로 검토해야 합니다. 예를 들어, 유관기관의 문서, 사진, 영상 등을 조사하거나, 생존자의 증언을 수집할 수 있습니다. 이러한 정보를 적극적으로 수집하고 검토해보면, 새로운 증거가 발견될 수도 있습니다.

나: 예를 들어 내가 "위안부 강제연행의 증거는 없다"고 주장하여 명예훼손으로 제소되었다면, 그때는 내게 무죄를 선고해야 합니까, 유죄를 선고해야 합니까?

ChatGPT: 법정에서는 증거가 충분하지 않거나 없는 경우에는 주장한 사실이 사실인지 아닌지를 판결할 수 없기 때문에, 무죄가 선고될 수 있습니다. 증거가 없거나 충분하지 않은 경우에는 추가적인 증거를 찾기 위해 시간을 기다려야 할 수 있지만, 추가적인 증거를 찾지 못한 경우에는 무죄가 선고될 수 있습니다. 증거가 충분한 경우에는 주장한 사실이 사실인지 아닌지를 판결할 수 있기 때문에, 유죄가 선고될 수 있습니다. 따라서 증거가 충분한 경우에는 유죄가 선고될 수 있고, 증거가 없거나 충분하지 않은 경우에는 무죄가 선고될 수 있습니다.

7 comments
강대종
법관들 밥줄이 끊어질 날도 얼마 남지 않았다..그날이 빨리 오길.ㅎ
Reply28 w
Tochiro Kim
신통하더군요...
Reply28 w
Oh Sang Dai
입으로 증언? 잘못되기 십상
Reply28 w
MirrorCla Ha
대한민국 판새보다 훌륭하군요
Reply28 w
강행근
인공지능 판사를 도입하자. 1심부터 도입해 보자.
Reply28 w
정상훈
이우연 무식해서 내한마디할께 총칼로 위협해서 끌고가야만 강제연행이 아니라는거 일본군이 아니라 민간인 인신매매등으로 본인의사에 반하는 일체의 개념이 강제연행이라는 호사카 유지교수의 강제연행을 김병헌은 강제연행이 아니라고했다고 허위보도라는거아녀 그래서 호사카 유지교수의 강제연행을 인정하는 판결이 있었던거뻔히 알면서 계속헛튼소리할래
Reply5 w
정상훈
240명 위안부중 가짜위안부가 누구인지 증거를갖고 재판에 임하라 개풀뜯어 먹는소리말고



=====

6. 언어모델(Language Model)을 이용하여 글을 쓰기(Text Generation):

가끔 AI가 뉴스나 시를 쓴다는 말을 듣습니다. 오늘은 AI로 글을 쓰는 방법에 대해 설명하겠습니다. AI가 글을 쓰는 것을 이해하기 위해서는 먼저 언어모델을 이해해야 합니다. 언어모델은 지금까지 나온 글을 보고 다음에 나올 단어를 예측하는 것입니다. 일 예로,
I am going _(?)_
즉, I am going 다음에 어떤 단어가 나오는가를 확률적으로 예측하는 것이 ‘언어모델’입니다. 아마 이 경우 ‘to’가 나올 확률이 가장 크겠지요. 그렇지만 home 이나 for 가 나올 수도 있습니다. 일 예로 to 60%, home 10%, for 15% …. 등의 답을 내보낼 수 있습니다.
이 언어모델의 한가지 응용은 음성인식입니다. 사람의 발음은 사실 엄청 엉터리이지만 우리가 머리속에서 언어모델을 이용해서 듣기 때문에 별 문제없이 잘 이해합니다. 영어가 잘 안들리는 것은 그 내용을 잘 모르기 때문에 next word prediction이 안되기 때문이라 생각합니다.
이 언어모델이 정확하기 위해서는 문장을 길게 볼 수 있어야 합니다. 다음의 문장을 봅시다.
- 우리 가족 일요일이면 꼭 ___
- 우리 동네 이마트가 생겼다. 거기 되게 좋아. 우리 가족 일요일이면 꼭 ____
앞의 문장에서는 아마 빈칸에 ‘교회’가 올 확률이 클 것입니다. 그런데 뒤의 문장에서는 아마 매우 높은 확률로 ‘이마트’가 되겠지요. 이렇게 언어모델이 잘 동작하기 위해서는 과거에 나온 단어들을 순서대로 길게 참고할 수 있어야 합니다. 길게 참고할 수 있는 것이 매우 중요합니다. 잘 까먹으면 안됩니다.
이렇게 지금까지 들어온 데이터를 길게 참조하기 위해서 RNN (Recurrent Neural Network, 회귀형 인공신경망)이나 Transformer 라는 인공신경망을 이용하는데, 오늘은 RNN을 이용하는 언어모델에 대해 설명합니다.
이 RNN(회귀형 신경망)은 아래 그림1에 보이는 것과 같이 출력이 입력으로 다시 되먹임(feedback)되는 구조를 가집니다. 그렇기 때문에 입력으로 I, am, going 이라는 글자를 3개 차례로 넣으면 그 것을 종합한 것을 내부의 state에 기억을 합니다. 그리고 이 다음에 나올 단어를 예측한 결과를 출력으로 내보냅니다.
비유로 들읍시다. 매달 월급, 주식 등 재산에 도움되는 것이 들어오는데, 그 것을 이 RNN의 입력에 넣으면 내부의 state에는 그 재산의 합이 저장이 되는 것과 비슷합니다. 그러면 이 RNN에서는 지난달까지의 재산(state)과 이번 달의 월급 또는 기타 수입을 이용하여 이번 달의 재산을 예측합니다.
언어모델에서는 이 RNN을 어떻게 훈련할까요? I am going to 라는 문장이 있으면, 입력으로 차례로 ‘I’, ‘am’, ‘going’을 주고, 출력에 ‘to’ 가 나오도록 역전파 (back propagation)방법을 이용하여 내부의 인공신경망을 훈련합니다. 즉, 훈련하기 위해서는 그냥 책이나 인터넷 문서와 같은 것을 가져와서, 빈칸 메우기가 아니고, ‘다음 단어 예측하기’ (next word prediction)을 이용하여 훈련합니다. 당연히 많은 텍스트로 훈련하기 때문에, 'I am going to', 'I am going for', 'I am going.' 등 다양한 단어시퀀스가 들어갑니다. 이를 통해서 확률을 생성합니다. 참고로 이 다음 단어 예측 훈련은 word embedding 때의 괄호(빈칸) 메우기와 비슷합니다. (이러한 훈련법을 세부적으로 self-supervised training이라 하는데 나중에 설명하겠습니다.)
그러면 AI는 어떻게 글을 만들까요? 바로 잘 훈련된 언어모델의 출력에서 확률에 따라 단어를 뽑아서 (sampling), 이를 다시 입력으로 넣으면 글이 됩니다. 즉, I am going 이라는 문장을 넣었을 때 출력에 to 60%, for 15%, home 10% 이면, 여기에서 단어를 이 확률 비율에 따라 하나를 뽑습니다. 즉, to 가 뽑힐 확률이 for 보다 4배다 더 높으니까, 지금 to가 뽑혔다 가정하지요. 그러면 이제 I am going to _?__ 다음의 단어를 예측합니다. 이제 school 50%, church 20%, … 등 등의 확률로 출력이 나옵니다. 여기에서 church 가 뽑혔다 가정합시다. 그러면 I am going to church __?__ 가 됩니다. 여기에서 다음 단어를 예측합니다. 이렇게 ‘꼬리에 꼬리를 무는 식’으로 다음 글자를 생성하면 문장이 됩니다. 이렇게 생성되는 단어는 확률값에 따라 선택이 되었기 때문에 항상 똑 같은 문장이 나오지는 않습니다.
I am going _?_ <- to 가 선택됨
I am going to _?_ <- church가 선택됨
I am going to church _?_ <- on 이 선택됨
I am going to church on _?_ <- Sunday가 선택됨
I am going to church on Sunday _?_
이렇게 생성된 문장의 문제는 자세히 보면 무슨 뜻인지 내용이 없습니다. 이는 언어모델은 많은 텍스트를 이용하여 만들었는데, 그 평균으로 (소위 context 없이) 문장을 만들었기 때문입니다. 즉, 어떤 사람이 기분이 좋을 때 하는 말과 나쁠 때 하는 말이 달라야 하겠지요. 이 기분에 해당하는 것이 context 입니다.
오늘 설명한 것의 요약입니다.
- 어떤 순서가 있는 데이터를 분석하기 위해서 RNN(회귀형 인공신경망)을 이용하는데, 이는 출력이 다시 입력으로 피드백 되어서 가해지는 구조를 가집니다.
- 이 RNN으로 언어모델을 만들 수 있는데, 언어모델을 만들기 위해서는 어떤 문장의 다음 단어 예측하기 (next word prediction) 방법을 이용하여 훈련합니다.
- 이 언어모델의 출력에서 확률의 비율로 단어를 선택해서 다시 입력으로 넣는 과정을 계속, 즉 꼬리에 꼬리를 무는 식으로 단어를 생성하면, 문장이 됩니다. 단, 이렇게 생성된 문장은 구체적인 뜻이 없습니다. 따라서 어떤 뜻을 가지는 문장을 생성하려면 context (상황)을 넣어야 하는데 이에 대해서는 다음 시간에 설명합니다.
---아래는 Shakespeare 의 소설로 훈련한 RNN에서 생성된 글 (원전 https://medium.com/.../ai-writes-shakespearean-plays...)
BRUTUS:
Could you be atherveshed him, our two,
But much a tale lendly fear;
For which we in thy shade of Naples.
Here’s no increase False to’t, offorit is the war of white give again.
This is the queen, whose vanoar’s head is worthly.
But cere it be a witch, some comfort.
What, nurse, I say!
Go Hamell.
FLORIZEL:
Should she kneel be?
In shall not weep received; unleased me
And unrespective greeting than dwell in, thee,
look’d on me, son in heavenly properly,
That ever you are my father is but straing;
Unless you would repossess him, hath always louded up,
You provokest. Good faith, o’erlar I can repart the heavens like deeds dills
For temper as soon as another maiden here, and he is bann’d upon which springs;
O’er most upon your voysus, I have no thunder; and my good villain!
Alest each other’s sleepings.
A fool; if this business prating duty
Does these traitors other sorrow.
...
사진 설명이 없습니다.
All reactions:
Sungsoo Kim and 103 others
7 comments
10 shares
Like
Share

7 comments

Most relevant

  • 이동근
    좋은 정보에 감사드립니다.클라우드 펀딩을 통해 주요국가 언어 통역 시스템을 만들면 세상에 큰 도움이 될 것 같습니다.
  • 우상정
    너무 방대한 데이터
    구분,세분화의 설정
    사람.동물.식물.환경.지역.학문.등등의 조합.… 
    See more
  • 고든리
    꼬리에 꼬리를 무는 이야기??ㅋㅋ 딴이야기지만 꼬리에 꼬리를 문다니까 끝말잇기가 생각납니다 원숭이 엉덩이는 빨게 빨간건 사과 사과는 맛있어 맛있는건 헉 아닙니다 ㅋㅋ
    HYUNA(현아) - '빨개요 (RED)' (Official Music Video)
    YOUTUBE.COM
    HYUNA(현아) - '빨개요 (RED)' (Official Music Video)
    HYUNA(현아) - '빨개요 (RED)' (Official Music Video)
    4
    대한별 replied
     
    2 replies
  • Sooik Oh
    내용이 점점 더 재미 있어집니다. 다음 편 기대합니다.
  • 하준규
    새롭습니다. 많이 배웁니다.



No comments: