Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- essential deep learning paper reading
- Ai
- Tensor
- 텐서
- anaconda오류
- pyTorch
- ML
- 리눅스 오류
- 머신러닝
- pytorch tensor
- 리눅스
- stm32f 시리즈를 이용한 arm cortex-m3/m4 구조와 응용
- 공부
- torch
- Machine Learning
- 일귀
- conda오류
- conda: command not found
- conda
Archives
- Today
- Total
Embedded World
Langcon 2023 후기, 인사이트! 본문
NLP 오픈톡방에서 어떤 분이 공유해주시면서 이런 행사가 있다는 것을 알게되었고, 연사분들 중 평소에 유튜브 토스채널에서 뵀던 Toss ML팀에서 근무하시는 대단하신 분, 공모전에서도 우리팀이 활용했던 모델을 직접 만들어주신 대단하신 분, 등 여러 대단하신 분들이 계신걸 확인했다. 바로 결제 후 지난 2월 18일 세미나를 들으러 갔다!
이 강연들 중 인상깊었던 부분들과 (bias와 noise가 많을)나의 생각을 간단히 정리해본다.
Open-domain QA, Dialouge State Tracking, Chatbot 에 관심이 많으신 Jongwon님을 시작으로 강연이 시작되었다.
1) Jongwon 님 "ChatGPT"
- 주어진 computing 자원 안에서 최적의 성능을 내기위해선, 당연하게도 더 많은 양질의 dataset이 요구된다.
- Codex(GPT3.5)라는 모델은 "Codex Data"라는 코드와 주석을 데이터셋으로 구성해 학습된 Generative LM으로, 코드짤 때 주석을 주면 코드를 짜도록 학습된 모델이다.
- ChatGPT의 학습방법은, RLHF(Reinforcement Learning from Human Feedback. 추후 설명) 을 거친 dialogue dataset으로 학습된 것 으로, 사람의 feedback을 거친 데이터셋을 활용해 모델의 성능을 높힌 방식으로 이해하였다.
- Computer Vision task에선 이런 Human labor cost를 감축하기위해 unlabeled data를 효과적으로 활용하는 Semi-Supervised Learning 이 있다고 알고있다. task마다 다르겠지만, 적어도 Chatbot의 경우는, 결국 OpenAI에서 인력을 사용해 Human Feedback을 준 방식이 가장 성능이 좋았다는 점을 생각해보면, 향후 현업이나 연구를 하면서도 Semi-Supervised Learning, Self-Supervised Learning 으로 성능이 충분히 나오지 않을 경우, NLP와 비슷하게 결국 labeling을 높히는... 단순하고 확실한 해결책을 적절히 염두해야겠다는 생각을 하였다.
- ChatGPT는 supervised model의 값이 원하는 값과 많이 떨어져있을수록 panelty를 주는 KL Divergence를 사용하여 학습하였다.
- 내가 이해한 KL Divergence는 Cross Entropy처럼 두 확률분포의 유사도를 scoring할 수 있는 방식이긴 하지만, JS Divergence처럼 거리개념으론 활용될 수 없다고 이해하고있다. 설명하신 부분이 꼭 거리를 말씀하신게 아닌지 혼동하는게 어떤 부분일지 개념을 더 들여다보는 시간이 필요할 것 같다!
- ChatGPT는 성능향상을 위해 "의미없는 단어"를 생성하는 부분을 제한하는 term을 loss에 포함시켜 성능을 개선하였다.
- Domain Adaptation task 중, reverse gradient를 흘리는 접근을 한 ``Y Ganin et. al. Unsupervised Domain Adaptation by Backpropagation. 2014. PMLR`` 연구와 유사한 점이 있지 않나 생각이 들었다. 저 논문은 classification loss(Cross Entropy Loss)외, source domain과 target domain을 기존 잘 구분하지 못하기위해 어떤 domain 데이터인지 classification하는 loss를 추가하였다. 이 추가된 loss가 backpropagation될 때, backbone에는 gradient 값을 반전시켜 전달함으로서, class를 구분하는 성능은 유지하면서 domain은 구분하지 못하게 하는 목적을 달성하였다.
- 물론 연사님이 언급하신 부분이 이런 multiple loss는 아닌듯 하지만, Domain Adaptation에서 domain을 구분하지 못하도록 reverse gradient 접근을 했던 것 처럼 NLP에서도 특정 domain위주로 생성되는 경향성을 제한하기위해 비슷한 접근을 응용해볼 순 없을지 막연하게 생각을 해보았다. Computer Vision task에서도, 연구를 하면서 특정 object를 detection하지 말아야 한다든지의 경향을 해당 object에 대한 reverse gradient로 접근해볼 수 있지 않을까도 생각하게되었다.
- ChatGPT가 얼마나 사람과 다른지 생각해보면, 너무 strict, static한 답변을 한다는 점이 있다.
- 글을 쓰는 시점인 2023.04월은 성능이 개선된건지, 연사님이 생각하는 정도가 더 narrow한지는 모호하나, 내가 ChatGPT와 대화를 해보면서 느낀점은 답변을 아이처럼 말해달라 부탁하면 더 아이같은 단어들을 사용하는 등 static한 답변이라 생각들진 않았다. 또한, 범용적인 목적을 가진만큼, 기본 서비스는 static한 어투로 제공되는게 의도된건 아닐까 생각이 들어 이 부분은 공감하지 못하였다.
- 현 ChatGPT의 문제점은, lack of factual correctness 이다.
- 만번 동의한다. 1) 학습 시 정확한 정보인지 아닌지에 대한 의도된 노력이 들어갔을지 아닐지 모른다. 2) 벡터공간상에서 가까워지도록 학습된 words들을 확률적으로 생성해내는 Transformer 알고리즘은 내가 짧은 식견으론 그럴듯한 무언가를 생성하는 데 최적이긴 하지만, 검색과같은 정확한 정보를 반환하는데는 최적이 아니라고 알고있다. 아마 향후 NLP연구자들이 다뤄야할 큰 방향이 아닐까 생각한다.
- domain 데이터에 대한 성능을 향상시키기위해선, dataset을 먼저 살펴보는걸 추천한다.
- 뒤 연사분들도 언급하신 부분이지만, 양질의 dataset이 정말정말정말 중요하다고 강조하셨다. 향후 연구, 현업에서 일을 진행하면서도 성능이 원하는 만큼 나오지 않을 경우 알고리즘 뿐만이 아니라 데이터셋에서도 문제를 탐색해야함을 배웠다!
2) monologg님 "Specific Domain"
- 특정 도메인에서 적당한 사이즈의 모델로도 해결할 수 있는 것이 많다. (닭을 잡는데 소잡는 칼을 쓰는것도 좋지 않다.)
- 이 부분은 도메인(NLP, Computer Vision)을 떠나 연구든 엔지니어링이든 동일한 부분이 아닐까 생각했다. 무조건 좋은, 큰 모델을 사용해 문제를 해결하려 하기 이전에 내가 풀려하는 task의 복잡성을 대략 알아보고, 가진 dataset을 체크해보고, 그 다음 모델을 현명하게 선택하는 방향을 취해야겠다는 기본을 잘 염두해야겠다!
- 내가 가지고있는 dataset이 정말 domain-specific corpus가 맞는지 확인해야한다.
- corpus는 무조건 많으면 많을수록 좋다. (연사님 경험왈, 4GB부터 적당한 performance)
- 데이터의 총 사이즈를 직접 계산해보는 법 : UTF-8기준, 1GB를 모으르면 256000개의 뉴스가 필요하다. 이걸 미리 계산해보고 각을 재보고 임하는것을 추천한다.
- 내가 고쳐가야할 습관같다.. 미리 데이터와 환경을 파악한다음, 해당 일이 진행될 수 있을지 면밀히 따져보는 과정이 선행되어야 헛수고를 덜 수 있다.
- Tokenizer가 성능을 많이 가른다. [UNK]가 발생하는 것을 먼저 보라. wordpiece를 보통 많이 쓰는데, 이 알고리즘의 특성상, 띄어쓰기 없는 단어에서 '똻'등의 없는 글자가 등장하면 그 단어 전체가 [UNK]처리되어 정보의 loss가 발생한다.
- 중요한 부분이라 생각했다! Computer Vision에서도 동일하게, 내가 사용하는 알고리즘의 특성을 이해해야 개선할 여지들을 볼 수 있다고 생각했고, 꼼꼼하게 공부하는 과정들이 필요하겠다 생각했다. 또한, 프로젝트를 진행하면서도, 알고리즘의 특성과 결과를 연관지어 생각해보는 것이 중요하겠다 생각하였다.
- 잘 정제된 소수의 데이터가 초 대량의 비정제된 데이터 보다 훨씬 중요하다. 연사님 생각에는 ChatGPT도 전처리에 오랜 시간을 썼을 수 있다 생각하시며, 그만큼 전처리와 데이터정제가 중요하다.
- Computer Vision에서도 image 의 퀄리티를 인간기준에서 모호한 수준으로 변형해 모델을 학습한 결과를 정리한 논문을 찾아봐야겠다!
to be continued!