3일 전, Stanford에서 따끈따끈하게 NLU강의를 풀어주셨다. 본 강의는 CS224N이 아닌 CS224U라는 점을 참고바란다.
CS224N은 Natural Language Processing with deep learning이며, CS224N은 Natural Language Understanding이라는 과목이다. 이 CS224U를 듣기 위해서는 선수과목으로 CS224N을 수강해야하는데, 나는 CS224N을 듣진 않았지만, 차근차근 들으면서 정리를 해볼 예정이다.
강의자료: http://web.stanford.edu/class/cs224u/slides/cs224u-intro-2023-handout.pdf
참고자료: https://web.stanford.edu/class/cs224u/background.html
강의링크: https://www.youtube.com/watch?v=K_Dh0Sxujuc&list=PLoROMvodv4rOwvldxftJTmoR3kRcWkJBp&index=1
우선 이 1강의 목표는 간단하다. 우리의 Christopher Potts 교수님께서는 간단하게 몰입하게 만드는걸 목표로 하셨다.
- 왼쪽이 2012년, 중간이 2022년도의 NLP와 관련된 내용을 정리한 내용이다. 2012년도에도 NLP를 배우기 좋은 환경이였는데, 이제는 더 재미있어졌다는.. 내용을 시작으로 2012년도에도 NLP붐이 있었으며, 주로 syntax에 중점을 두었고, 시리, Watson과 같은 home device가 생겨나기 시작하면서 산업계에 큰 인식을 주었다. 많은 기업들이 NLP를 사용할 줄 아는 사람들 원했다 이런 얘기를 하셨다.
- 2022년도 마찬가지이며, 여전히 흥미로운 상황에서 NLP를 배울 수 있다고 좋아하셨다. NLP가 다시 유행을 타기 시작하면서 약점 또한 보여주었지만, NLU 즉 Natural Language Understanding에 대한 궁금증은 여전히 해결되지 않았다.
- 하지만 이러한 과정을 극복하기 위해, or 성능을 올리기 위해 여러 모델이 나오게 되었고, 점점 더 좋은 모델을 만들었다.
- 우측은 현재의 NLP 모델이 적용된 프로그램이다. QnA 시스템, 인터넷 검색, Code 자동으로 짜주는 등 다양한 NLP기술이 나오게 되면서 다시 사람들은 NLU에 대해 관심을 가지기 시작했다.
- 또한 이 강의를 통해 배우고자 하는 내용은 아래와 같다. + Transformer에서도. 아주 재미있어 보이는 내용이 많다.
위와 같이 미국의 주 중에서 주 끼리 맞닿아 있지 않는 주는 뭐가 있는지 물어보는 간단한 질문에 대해 NLP는 위치 정보가 없기 때문에, 이 간단한 질문에 대해서도 답을 하는 것이 매우 어렵다. 이런 간단한 질문을 통해, 우리는 이전 모델들의 약점을 분석해보도록 하는 시간을 가지려고 한다.
- 위의 1980년대 프로그램 이름은 Chat80? 맞는지 모르겠다.. 어쨌는 symbolic Programming으로 구성이 되어있다.
- 우측의 어떤 국가에 대한 질문인지 맞추는 문제에 대해서도 잘 맞추는 모습을 보인다. 하지만, 우측의 아래와 같이, 위치정보가 포함된 문제에 대해서는 어려움을 겪는 모습을 보이고 있다.
- 왼쪽은 wolframAlpha라는 2009년도 모델인데, 똑같은 질문에 대해, 아래에 여러 글자와 같이 그냥 50개의 주를 그냥 싹 다 출력해버린다. 이전보다 나은 모습이지만, 문제를 이해하는 능력이 없다고 볼 수 있다.
- 우측의 2020년 OpenAI의 ada모델은, No라는 답을 2가지 표현으로 뱉어낸다. 똑같은 질문에 대해 seed 값만 바꿔서 3번 다 엉뚱한 답만 출력했다고 보면 될 것 같다.
- 4가지를 왼쪽 위에서부터 순서대로 2020-babbage, 2021-curie, 2022-davinci(beta), 2022-text-davinci 인데, 모두 시간순이다. 이 모델들은 시간이 가면 갈수록 점점 더 정확한 답을 한다는 것을 볼 수 있다. 특히 2021 curie는 푸에르토리코 혹은 버진 아일랜드라는 엉뚱한 답이 들어가 있지만, 점점 더 답에 가까워지며, 다빈치 모델부터는 매우 정확한 답을 낸다.
++ 참고로 2023년 1,2월에 나온 다빈치 모델은 매우 정확한 답을 내보낸다. 기술의 발전이 몇 세대를 거쳐서 정확해졌다.
- 여러개의 질문에 대해서도 아주 답을 잘 해주는 요즘 NLP모델이다.
그리고 이번 강의에서는 Hector J. Levesque가 작성한 "On our best behavior"라는 논문인데, Winograd schema라는 모델이 얼마나 깊게 이해하는지에 대해 알아보는 테스트를 수행한다. 즉, 이상한 질문을 하고, 그에 대한 답을 본다는 것.
ex) Could crocodile run the steeplechase? 와 같은 이상한 질문을 한다는 것이다.
- 그래서 나온 질문은 baseball player가 모자에 날개를 달아도 되냐는 질문인데, 질문이 참 재미있다. 교수님께서 다빈치2 모델의 답변이 맘에 든다고 하셨고, 이 다빈치3의 답변이 정답이 맞는지, 아닌지는 정확하게 모르지만, 조금 걱정된다고 할정도로 정확한? 그럴싸한 답을 낸다. 둘 모델이 약간은 다르지만, 그래도 비슷한 면도 있으며, 인상깊은 답을 준다.
- 이번에는 데이터 셋이 만들어지고 난 후, 어느 정도의 시간을 지나야 인간보다 더 뛰어난 성능을 가지는지에 대한 그래프이다. MNIST, Switchboard의 경우 20년이 넘는 시간이 걸렸지만, 최근에 나오느 GLUE, superGLUE는 1년도 지나지 않아 사람보다 더 뛰어난 성능을 보여준다는 것을 알 수가 있다.
- 우측은 최신 모델의 성능을 최신 task에서 보여준다. 여러 task에서 최근에 나온 여러 모델들이 좋은 성능을 보였다.
1. 1960년대부터 지금까지 NLP모델의 변천사를 보자면, 1960-1980은 symbolic programming이 사용되었다.
2. 1990, 2000년대에 들어서는 통계학적인 발전을 NLP에서 보였기에, Machine Learning system을 사용하기 시작했다. feature function을 사용해서 data의 특징을 추출하고 배우는 과정이 생겼다.
3. 그 다음으로는 이제 Deep Learning모델의 사용이다. 매우 큰 모델을 사용하여, 매우 큰 cost/capacity가 필요로 하였다. 또한 처음부터 학습을 시키는 Scratch Learning을 수행하였다.
4. 2018년 부터는 이제 pre-train component가 생기게 되었는데, 여기서 까만색 모델은 General purpose language capabilities라고 해서 큰 데이터 셋에 대해서 pre-train하는 과정을 의미하며, 녹색이 이제 fine-tuning단계이다.
5. 마지막으로 현재는 그냥 엄청나게 큰 데이터 모델을 사용한다.
- 그래서 또 하나의 핵심이 이제 Self-supervision인데, BERT를 아는 분들은 BERT를 생각해도 좋을 것 같다. I am a boy라는 문장이 있다면, I am a ___ 으로 만들어서 문장에 전체적인 흐름, 패턴을 파악할 수 있게 만드는 것이다. 혹은 i am a sad 라는 문장을 주고 상태가 어떤지 0-기쁨, 1-슬픔, 2-화남 ..ect 와 같이 만들어 문장을 학습하는 방식을 말한다.
- 뿐만 아니라, 두번째로 attested sequences라고 하여 사람들이 자주 사용하는 문장, 패턴에 학습하며 high probability를 주어 실제 언어 사용패턴을 잘 반영하려고 하는 것이다.
- 또한 이 문장에서의 Sequence는 language의 token, language + senor, 혹은 code, image를 더한 것이 될 수도 있는데, 이는 모델이 이 sequence가 가지고 있는 distribution patterns를 파악하여 학습한다음 이를 반영하려고 한다는 것이다.
- 처음으로 Glove는 Word2vec으로 알고있고, 두번째는 ELMO라는 모델로 fine-tuning을 통해 엄청난 성능을 보여줬다.
- 그리고 BERT가 나오는데 Bidirecitonal Encoder Representation Transformer였나..? 아무튼 이게 처음으로 Transformer모델을 사용하여 ELMO를 그냥 뛰어넘어버린 논문이다. 그 다음으로 GPT-1세대, GPT-3세대인데, 내 기억이 맞다면 GPT 1세대가 더 빨리 나온 것으로 알고있는데, 교수님은 BERT를 먼저 설명하셨다.
- GPT-3세대 성능부터는 워낙 유명하니까 더이상 말하지 않겠다.
- 그리고 또 주의깊게 봐야할 부분은 Model size이다. 이 분야에서는 농담으로 곧 사이즈가 1T를 넘길거라는 이야기도 하지만, 우측에 그려진 요즘 모델들은 조금 더 가벼워진 것을 알 수가 있다.
- 요즘 추세는 작고 정확하게 가는 것이라고 한다. 각각의 장단점이 있지만, 작은 모델들의 특징이 있다면 아래와 같다.
1. Prompting
- 위에서 언급하긴 했던 BERT의 방식이다. 이런 과정을 통해 모델이 co-occurrence pattern과 text를 transparently(투명)하게 얻을 수 있다. 이 작업을 우리는 prompting이라고 부른다.
++ 인간의 루틴을 반영하게끔 해석할 수도 있다. 많은 사람들이 사용하는 특징을 보고 그 중에서 모델이 골라서 학습을 한다는 것이다.
- 따라서 우측과 같이 Script에서 정답을 찾아서 내뱉는 그런 task를 수행할 때, 왼쪽과 같은 prompting 방식은 매우 효과적.
- 또한 이런 prompting 방식은 데이터만 바꿔서 넣으면 되기에 매우 편리하며, 다른 작업은 필요 없다.
- 왼쪽은 특별한 Custom dataset, 특별한 classifier가 정의된 모델이 필요하다. 하지만, 우측은? 그냥 별다른 필요 없이 blank 처리해서 넣으면 된다.
- 우측에서 Nervous anticipation에 대한 내용은 그냥 symbol중 하나가 된다고 보면 된다. 그리고 이런 작업은 GPT3에 적용이 되었는데, 논문에서는 현재의 state 학습이 가능하며, 그리고 성능이 좋다고 밝힌다.
2. Learning from human feedback
- prompting에 이은 또 다른 쟁점이 있다면, 인간의 수정을 거친다는 점인데, AI가 그럴싸한 정답을 주고, 사람에게 수정을 맏기는 과정을 생각하면 될 것 같다. 이러한 점을 통해 이제는 Human Inteligence가 되었다고 표현하는데, 예를들어 파이썬 코드를 달라고 요청하고 AI가 코드를 주면, 우리는 우리 입맛에 바꿔서 사용하고, 또 그 코드를 AI한테 제공하고 수정, 혹은 다른 답을 요구하는 과정에서 AI는 수정된 코드를 학습할 수 있다는 것과 같다.
- 그렇다면 부정적인 표현을 바탕으로 이 Human inteligence를 적용해보자.
- 다음과 같은 질문에 그냥 거꾸로 된 문장을 출력하는 2021년 방법론과, 우측과 같이 premise, question, reasoning, answer와 같이 이 4가지에 대한 틀로 된 예시를 두개를 주고, 똑같은 질문을 하는 2023년 방식을 사용하였을 때 어떻게 되었을까.
- 결과는 매우 좋다는 것을 확인할 수 있다.
- 따라서 Human + AI는 기존에 보지 못한 관점을 보게 함으로써 성능을 올릴 수 있다는 것을 알 수 있다.
- 또한, LLM과 최근 사용되는 Retrieval-Augmented 방식에 대한 차이를 설명한다.
- 우선 LLM은 그냥 Input을 모델에다가 넣고 출력한다. 끝.
- 하지만 Retrieval-Augmented 방식은, 똑같은 질문에 대해서, LLM을 통과 후, query에 numerical representation을 encode 시켜서 반환한다. [0.5, 0.1, 0.9, 0.2] == query 부분
- 조금더 구체적으로, 우리의 query에 대해 LLM혹은 그냥 task에 대한 모델을 통과시킨 후, 이 값에 대해 다시 LLM을 통과시킨다. 그런 후 우리의 최종 답이 완성된다.
→ 이 과정을 통해 user는 어떤 과정을 통해 이 정답이 만들어 졌는지 알 수 있다. evidence를 제공한다고 해야하나..
- 이러한 RA방식은 위와 같은 장점을 가져다 준다. 이모지가 웃는 모습이 자신이 웃는 모습이라 표현하시는 교수님 귀엽다
- 다시 Model size에다가 이를 적용시키면, 큰 모델들은 그냥 LLM이라고 보면 되고, 작은 모델들은 RA방식을 사용했다. 따라서 작은 모델을 만들기 위해서는 RA가 필수적이다.
- 또한 Updateability 부분에서도 활짝 웃고있는 모습을 보이는데, 왼쪽의 LLM과 같이 오래된 정보에 대해서, 모든 정보는 연결되어있기에 수정하기 어렵다. 따라서 새로운 정보가 반영되기 어렵다. 하지만, 우리의 Retrieval-Augmented 방식의 경우 우리는 그냥 인덱스 모델만 다시 업데이트만 하면 된다.
- 다시 날개달린 모자로 돌아와 참고 문헌을 달라고 했을 때, LLM의 링크는 오래되었기에, 404오류를 제공한다. 하지만 RA방식은 위와 같이 각 부분에 대해 Link가 가능하며, 오래된 정보는 update가 가능하기에 정확한 정보 제공이 가능하다.
- 또한 LLM은 어떤 방식으로 학습되었는지 알 수가 없지만, 우리는 우측과 같은 내용을 들여다 봄으로써 어떻게 학습이 되었는지, 조금 더 자세하게 알 수 있다.
- 또한 이번주차 과제인데, 다음과 같이 what is the course to take라는 질문에 대해, 지금까지 배운 것을 적용해본 모습이다.
- 해석은 위에서 다 한 것같으니 패스하겠다.