[책] 챗GPT & 파이썬으로 AI 직원 만들기 : 할루시네이션을 극복하며 창의적인 프로그램을 만드는 지난한 과정
챗GPT & 파이썬으로 AI 직원 만들기
: 할루시네이션을 극복하며 창의적인 프로그램을 만드는 지난한 과정
*지난하다고 썼으나, 독자가 이해하기에 버겁다는게 아니라, 시행착오를 겪는 이야기라는 뜻일뿐이다!
누가 읽으면 좋을까?
- 파이썬을 막 배워 뭔가를 만들어보고 싶은 사람
이책은 파이썬을 거의 모르는 사람도 따라할 수 있다. 그러나 당연하게도 그만큼 이해가 얕아질 수 있다. 그래도 파이썬을 막 훑고 나서 뭔가를 만들어보고 싶을때 읽어도 되는 정도다.
- gpt로 쓸모있는 프로그램을 짧은 호흡으로 만들어보고 싶은 사람
이책은 유튜브 pd 앱이라는 하나의 프로그램을 차근차근 쌓아가며 만들어간다. 즉, 하나의 프로그램을 한 권 내내 다듬어가게 된다.
1. 시행착오를 보여주며 차근차근 쌓아올리는 이야기
2. Temperature 과 창의성, gpt가 창의적일 수 있는가?
3. Temperature 값이 높을 때와 낮을때?
4. Temperature 값을 어떻게 쓰면 좋을까?
5. Temperature 과 창의성, gpt는 창의적이지 않다.
6. 할루시네이션을 극복한 방법
1. 시행착오를 보여주며 차근차근 쌓아올리는 이야기
내가 접한 Do it 시리즈들은 대부분
(이러한 코드를 넣습니다 + 이런 의미입니다.) 구조로 구성되어 있었다.
그런데 이책은 gpt의 도움을 적극 이용하다보니, 재미있는 구조로 구성되어있다.
(gpt한테 물어봄 + 실행해봄 + 문제생김 + 다시 물어봄 + 수정함 + 실행해봄 + 문제생김 +수정함.....완성)
이렇게 반복하는 과정에서 삭제한 코드도 취소선 아래에 남겨놓고 설명해준다. 친절할 뿐더러 이야기를 듣는 듯이 흐름이 이어지고, 또 이런 비슷한 프로그램을 구상 중이라면 겪을만한 다양한 시행착오를 찾아낼 수 있다.
2. Temperature 과 창의성, gpt가 창의적일 수 있는가?
gpt api를 불러와서 몇 가지 파라미터를 함께 수정해보고 그 결과를 출력해 설명해주는 부분이 있다.
여기서 temperature 값에 따라 '창의성'을 조절할 수 있다고 설명하는데, 저자의 개인적인 의견이 아니라 커뮤니티에서도 temperature 값을 창의적인 답변을 위해 조절한다고 흔하게 이야기하곤 한다.
다만, 이에대한 논쟁은 있다. 이 temperature값은 무작위성을 조절하는 것이지, 창의성과 무관하다는 것이다.
3. Temperature 값이 높을 때와 낮을때?
temperature값을 1보다 낮추어 (예 0.2), 가장 확률이 높은 토큰이 선택될 확률이 더 높아져서 (일관된, 이미 응답했던, 보다 자연스럽고 정확하다고 느낄) 응답이 출력된다.
temperature값이 1을 넘어서면, 가장 나올 확률이 높았던 1등 토큰이든, 2등 토큰이든 둘의 확률 차이가 점점 줄어든다. 즉, 응답한 적이 없는, 일관되지 않은, 정확하다고 느끼지 않을 토큰이 출력되게 된다.
4. Temperature 값을 어떻게 쓰면 좋을까?
우선 그럼, 이 temperature 값을 창의성과 결부짓는 것은 잠시 뒤로 하고, 이를 어디에 활용할 수 있을지 생각해볼 수 있다.
오픈에이아이 개발자 포럼에서는 temperature값과 Top_p값을 조정하면서 어디에 쓰면 좋을지 분류한 분이 있었다. (다만, 공식 open AI에서는 이 값을 동시에 조절하는 것을 권하지 않는다고 한다.) 우리는 temperature 값만 눈여겨보면서 재미있는 생각을 얻어볼 수 있을 것 같다.
댓글에 여러 논쟁이 남아있지만, 이분이 조금씩 바꾸어 테스트해보고 결과를 나눈게 고맙다. 일관된, 보다 정확하다고 느끼는 답변은 역시 코드 생성과 같은 답을 요구하는 작업에 적용하기, 반대로 무작위의 답변은 글쓰기에 활용하기, 반면 챗봇의 응답은 0.5로 세팅했다.
top_k, top_p에 대한 설명은 아래 링크로 연결하겠다!
https://pangguinland.tistory.com/318
5. Temperature 과 창의성, gpt는 창의적이지 않다.
책에서는 가볍게 창의적이고 다양한 답변을 얻기 위한 파라미터정도로 temperature를 소개한다. 용도에 따라서 그렇게 이해해도 좋겠지만, 소소한 갑론을박이 벌어지는 것은 '창의적이다.'라는 의미를 곰곰히 따져보는 것이 맞기 때문일 것이다.
낯선 질문이나 이상한, 생각하지도 못한 것은 창의적인 것이 아니라는 주장을 접한 적있다.
그 주장에 따르면 '창의적'이라는 것은 반드시 '더 나은' 것을 전제로 한다. 더 나은 것이 아니라면 그것은 단지 '괴상한' 것에 그친다는 말이다. 적절하고 가치있는 것 새로움이어야 한다. 같은 맥락으로 나는 gpt가 다양하고 낯선 답변을 내는 것을 '창의적'인 답변을 내었다고 설명하면 안된다고 생각한다.
가령 문을 여는 창의적인 해결책으로 문을 '부수었다.'가 사람에 따라서 창의적인 해결책이 될 수도 있고, 아니면 어처구니 없는 해결책일 수도 있다. 결국 창의성은 '사람'의 '판단'에 달린 일이다.
6. 할루시네이션을 극복한 방법
저자는 윤리적인 문제나, 할루시네이션 문제를 지속해서 경고해주고, 이를 해결한 방법들을 친절하게 알려준다. 재미있는 해결책들이 있었다.
문제1)
존재하지 않는 가수나 제목을 생성한다. > 유튜브에서 해당 낱말(가수, 제목)이 검색되는지 확인하도록 한다.
문제2)
간혹 노래 제목만 넣어서 올린 영상이 있기도 하다. > 유튜브에서 상위 5개의 영상을 대상으로 해당 낱말이 검색되는지 확인하도록 개선한다. 5개 중에 한 영상 정도는 제목과 가수 이름을 온전히 올린 영상이 있을테니.
오! 나는 이전에 해당 문서에서 정보를 추출하되 '그근거가 몇 번째 줄에 그것이 있는지 찾고 출력해줘' 등의 사람이 개입하는 방식을 사용했었는데, 이는 이마저도 자동으로 코드에 넣은 것이 재밌었다.
다만, 의문이 다시 드는 것은 유튜브에는 모든 음악이 있다고 할 수 있나? 유튜브에는 반드시 존재하는 가수와 제목이 들어가는가? (요즘 처럼 ai 커버가 만들어지는 때에는 부르지도 않은 영상이 꽤 많다..)
이책이 앨범커버를 생성하며 이미지를 만들고, 검색한 음악을 합쳐 영상을 만들기까지 이어지는 동안 꽤 다양한 생성형 ai를 접해볼 수 있어 그점도 좋았다. 친절한 책이다!
그런데 하나 더 의문이 남는 것은.. mp3파일로 음원을 다운로드하거나 아무리봐도 가수를 닮은 이미지를 생성하는 것 등은 저작권 등의 문제가 없는 건가?!