이번 주의 선택미션이 자연어 처리와 생성형 AI를 정리하는게 미션이더군요.
그런데 강의와 책을 보았으나 입문자용이라 그런지 많이 얕게들어가는게 아쉬웠습니다.
대충 알고리즘적으로 자연어 처리와 생성형 AI를 동작시킨다는건 알겠는데 진짜로 어떻게 학습시키는 건지 어떤식으로 만들어 졌는지는 아리송하더군요,
그래서 이번 글의 주제는 얕지만 좀더 깊은 AI 지식입니다. ㅎㅎ
우선 자연어 처리방법부터 찾아보니 기초적으로 문장을 토큰화하고 임베딩한 후에 텍스트 데이터들을 학습시켜서 모델을 완성시킨후 사용한다고 합니다.
이게 다 무슨 소리여 ;;;
하나하나 살펴보면서 갑시다.
1. 토큰화
먼저 자연어 처리에 가장 먼저 필요한 토큰화입니다.
토큰화란 단어 단위로 또는 문장단위로 토큰으로 나누는것을 의미하는데
단어 토큰화의 경우 컴퓨터가 의미를 가지고 있는 단어 단위로 나누는 느낌이고
문장 토큰화의 경우 컴퓨터가 의미를 구분할때 마침표(.),컴마(,),느낌표(!)와 같은 특수문자가 포함되어있는 문장이 문제가 될 수 있어 수행되는 토큰화 방법입니다.
단어 토큰화의 경우 위의 사진처럼 의미를 가지고 있는 단위들 즉 조사,명사 모두 다 나누어서 전처리를 합니다.
문장 토큰화의 의 경우
"정한민의 이메일 주소는 wjdgksals56@naver.com 이야. "
와 같은 질문을 그냥 문장을 이해시킨다면 마침표를 경계로
"정한민의 이메일 주소는 wjdgksals56@naver." , "com 이야."
두 문장으로 이해하기때문에 컴퓨터가 문장단위를 햇갈리지 않게끔 만드는 토큰화 방식입니다.
그런 이후에는 불필요한 단어들이나 동일한 단어들을 통합하여 데이터를 줄여서 학습시키기 좋게 만듭니다.
그럼 이제 문장을 토큰화 했으니 컴퓨터에게 학습시키면 되겠죠? --- 아니요
.
컴퓨터는 1과 0만 이해하고 또 글자보다 숫자를 이용하는게 더 속도가 빠르니 글자들을 모두 숫자로 바꿔서 이해하기 쉽게 만들어 줘야합니다.
2.워드 임베딩
위 의 사진과 같이 토큰들에 숫자를 부여하고 이진법의 숫자값으로 바꿔주면서 벡터값을 취할 수 있게되는데 이러한 임베딩 방식은 후일 GPT나 Bert같은 최신 유행하는 AI를 만들어 내는 기초가 됩니다.
why? 주변의 단어들로 단어의 벡터값으로 표현이 가능해지면서 연관성을 표현할 수 있게되면서
이전과 달리 단어 사이의 연관성을 파악이 가능해지고 문맥상의 흐름을 컴퓨터가 이해하게 된겁니다.
그러면 이제 끝인가요? 아니죠 이젠 인공지능 모델을 이용하여 이 토큰화된 문장들을 더 학습시켜야 합니다.
3. Transformer 모델
기존의 학습방식은 RNN이라던가 seq2seq와 같이 하나하나 입력하고 출력해내는 가내수공업같은 느낌의 자연어 처리였습니다.
문맥을 알려주기 위해 단어 하나하나 순서대로 입력하여 학습을 시켰는데 이는 매우 비효율적이였고 그래서 병렬동작을 통해 빠르게 학습시키는 모델인 Transformer 학습 모델이 나왔습니다.
이 모델은 단어 하나하나를 입력하는게 아니라 각각의 단어에 번호를 지정해주고 병렬로 학습시키면서 더욱 빠르고 위치 정보를 알게되어 문장의 앞뒤를 더욱 자세하게 파악할 수 있게 되어 생성형 AI의 기반이 되는 모델이 되었습니다.
ChatGPT 또한 이 Transformer 모델의 한 종류입니다.
아니 그래서 우째 ChatGPT가 학습하고 동작하는 겁니까? 라고 질문 하실 수 있습니다.
4.AI의 학습 방법과 생성형 AI의 동작
AI의 학습 방법에는 크게 2가지 방식 - 지도학습과 비지도 학습이 있습니다.
지도학습의 경우 질문에 대해 사람이 하나하나 문장이 올바른지,부정확한지 정답을 적어주고 학습시키는 것을 말한다.
비지도학습의 경우 질문을 주고 AI가 알아서 추론하고 판단해서 답변을 하면 정답과 유사성을 비교해 점수를 부여하면서 정답과 동일해질때까지 스스로 학습하는 방식입니다.
사진의 예시처럼 미리 레이블된 데이터셋이 없이 알고리즘이 사물들의 특징 또는 텍스트의 특징들을 구분하고 이를 정답과 비교하면서 100%동일해질때 까지 알고리즘의 매개변수를 수정하면서 반복합니다.
그럼 ChatGPT는 어떤 방식으로 학습했을까요?
https://devocean.sk.com/blog/techBoardDetail.do?ID=164626&boardType=techBlog
아니요 사람이 하나하나 개입하여 알려주고 학습시켰습니다. 어떻게?
정답은 지도학습입니다. 위 사진은 ChatGPT를 학습시킨 방안을 간략하게 보여줍니다.
1단계 : 사람이 직접 질문과 답안을 작성하고 이를 가지고 지도학습을 진행했습니다.
2단계 : 기존의 학습된 인공지능에게 질문하고 답변 중 알맞은 답안에 순위를 매겨 다시 학습시킵니다.
3단계 : 학습된 질문과 답안이 아닌 전혀 다른 질문에 대해서도 올바른 답을 생성해내는지 확인해가며 파인튜닝하여 완성시킵니다.
그리고 이렇게 학습이 되고나면 밑에 사진처럼 추론을 할 수 있게 되는겁니다!
참고
https://www.playsw.or.kr/artificial/textbook/detail/18
참고영상
https://www.youtube.com/watch?v=Pj6563CAnKs

이 글은 초짜 개발자가 아무것도 모르고 썼으며 아무런 책임도 지지 않습니다.
반박시 여러분의 말씀이 옳습니다. 빠르게 수정하겠습니다.
'컴퓨터 사이언스 > 혼공얄코' 카테고리의 다른 글
[혼공얄코] 3주차 미션 (4) | 2024.07.23 |
---|---|
[혼공얄코] 2주차 미션 (1) | 2024.07.15 |
[혼공얄코] - 기획부터 개발까지 02 - 기능정의서 (0) | 2024.07.10 |
[혼공얄코] 기획부터 개발까지 01 - 요구사항분석 (0) | 2024.07.09 |
[혼공얄코] 1주차 (0) | 2024.07.07 |