{
    "componentChunkName": "component---src-templates-post-tsx",
    "path": "/gpt/",
    "result": {"data":{"logo":null,"markdownRemark":{"html":"<h1>GPT (Generative Pre-trained Transformer)</h1>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137573333-0e67caea-e8cb-4886-9ed0-46fa610d91d0.PNG\" alt=\"1\"></p>\n<p>gpt1 먼저 알아보고, gpt2에 대해 알아보겠습니다.</p>\n<hr>\n<h1>GPT1</h1>\n<p><a href=\"https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf\">Improving Language Understanding by Generative Pre-Training</a></p>\n<h2>Abstract</h2>\n<ul>\n<li>다양한 라벨링 되지 않은 데이터로 unsupervised pre-training하고, 라벨링 되어있는 데이터로 특정 task에 supervised fine-tuning 하는 self-supervised 학습을 한다.</li>\n<li>각 task마다 input 형태를 조금씩만 다르게하면 좋은 성능을 보일 수 있는 범용적인 representation을 학습한다.</li>\n</ul>\n<br>\n<h2>Introduction</h2>\n<ul>\n<li>기존 NLP모델들은 labeled된 데이터를 바탕으로 지도학습을 했다. 하지만 존재하는 데이터는 unlabeled data가 훨씬 많기 때문에, unlabeled data의 정보를 활용한다면 효과적으로 학습할 수 있었다.</li>\n<li>But, 어떤 objective function이 유용한 text representation을 배우는데 효과적인지 알 수 없었다.</li>\n</ul>\n<p>그리고 이전까지는 각각의 task마다 모델을 학습시켰기 때문에 범용적으로 학습된 모델을 다른 NLP task에 어떻게 사용할 것인지 명확한 방법이 존재하지 않았다.</p>\n<p>이러한 한계점들을 보완하고자 unsupervised pre-training과 supervised fine-tuning을 한 semi-supervised를 사용하였다.</p>\n<br>\n<h2>Framework</h2>\n<p>모델의 학습은 다음과 같이 2단계로 나타낼 수 있다.</p>\n<ol>\n<li>라벨링되지 않은 대량 데이터를 이용하여 범용적인 언어모델을 학습</li>\n<li>라벨링 데이터를 이용하여 특정 task에 맞춰 모델을 fine-tuning</li>\n</ol>\n<br>\n<h3>Unsupervised pre-training</h3>\n<p>라벨링되지 않은 데이터 u가 주어졌을 때, 다음과 같은 likelihood를 최대화 하기위해 language modeling objective funtion을 사용한다.\n<img src=\"https://user-images.githubusercontent.com/54731898/137592007-c617d2a3-cdf1-4e1a-a73b-dd027f8f03d5.png\" alt=\"image\"><br>\nk는 context window이고, Θ는 parameter이다.</p>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137592144-d0adde20-0da4-487c-9217-bd0a7537903b.png\" alt=\"image\"></p>\n<p>language modeling objective funtion을 쉽게 표현하면 다음과 같다. 맞출 단어의 이전 단어들을 보고 해당 단어를 맞추는 것이다. 예를 들어, 위의 사진에서 정답 문장이 “다음 단어를 떠올리면 됩니다.” 일 때, 사진에서 정답(ground truth)은 “리면”이 된다. 그래서 모델은 이전 단어인 “다음 단어를 떠올”을 보고 여러 가지 토큰들 중에서 “리면”이 나올 likelihood를 최대화하는 방향으로 학습을 진행한다.</p>\n<br>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137592439-d1e34ad4-ccd7-4bac-ad8b-e17be3398a3a.png\" alt=\"image\"></p>\n<p>또한 GPT는 Transformer의 변형인 multi-layer Transformer decoder를 사용한다.</p>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137593453-cf69c0e3-32bf-4361-ae5e-230fce52b9bc.png\" alt=\"image\"></p>\n<p>token embedding 값과 position embedding 값을 더해준다. 그리고 transformer_block을 n번 통과하고 vocab 사이즈만큼 linear 해준 후 softmax를 취해준다.\nn은 layer의 수, We는 token embedding 행렬, Wp는 position embedding 행렬이다.</p>\n<br>\n<h3>Supervised fine-tuning</h3>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137593397-8aa2714c-091d-41de-a1e9-3c0a83ae378e.png\" alt=\"image\"></p>\n<p>위에서 학습한 언어 모델을 task에 맞춰 fine-tuning 한다. 앞서 학습한 pre-trained 모델을 통과하고 label y값을 예측하기 위해 linear 해준 후 softmax를 취해준다.</p>\n<p>또한 fine-tuning 단계에서 학습을 돕기 위해 언어모델을 보조 objective function으로 포함시켰다고 한다. 첫 번째 이유는 supervised 모델의 일반화(범용성)를 향상시키기 위해서이고, 두 번째 이유는 수렴을 빠르게 해주기 때문이다.</p>\n<p>그래서 아래와 같은 목적함수를 최적화한다.<br>\n<img src=\"https://user-images.githubusercontent.com/54731898/137593826-48ce3aa6-a494-48bb-be1a-a0cc0f4dfb89.png\" alt=\"image\"></p>\n<br>\n<h3>Task-specific input transformations</h3>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137593951-4927546d-9138-4918-b520-bc3d3684973b.png\" alt=\"image\"></p>\n<p>위에서 언급한 것 처럼 task에 맞게 input 형태를 적절하게 변형시켜주어야한다.</p>\n<p>스폐셜 토큰으로는 문장의 시작을 알리는 start 토큰 <code class=\"language-text\">&lt;s></code>, 문장의 끝을 알리고 BERT의 CLS 토큰 역할을 하는 extract 토큰 <code class=\"language-text\">&lt;e></code>, BERT의 SEP 토큰처럼 문장을 이어주는 delimeter 토큰 <code class=\"language-text\">$</code>이 있다.</p>\n<h4>Textual entailment</h4>\n<ul>\n<li>전제 p와 가정 h를 delimeter 토큰<code class=\"language-text\">$</code>로 연결하였다.</li>\n</ul>\n<h4>Similarity</h4>\n<ul>\n<li>두 개의 텍스트의 순서가 없으므로 두 개를 다른 순서로 이어붙여 총 2개를 입력으로 쓴다. (data augmentation)</li>\n<li>이는, Transformer에 각각의 입력으로 들어간다.</li>\n</ul>\n<h4>Question Answering and Commonsense Reasoning (Multiple Choice)</h4>\n<ul>\n<li>document context를 z, question을 q, 가능한 답변을 ak라고 하면, context와 question을 이어붙여 위 사진의 Context 부분을 만들고 delimeter 토큰<code class=\"language-text\">$</code>과 answer을 이어준다.<br>\n수식으로 표현하면 <code class=\"language-text\">[z;q;$;ak]</code> 이러한 형태이고, 각각 독립적으로 모델에 전달된다.</li>\n</ul>\n<br>\n<h2>Conclusion</h2>\n<p>당시만해도 pre-training과 fine-tuning이 익숙하지 않았었는데, unsupervised pre-training을 통해 많은 성능 향상이 있었고, 그 모델로 여러가지 nlp task를 푸는데 성공하였다.</p>\n<br>\n<hr>\n<h1>GPT2</h1>\n<p><a href=\"https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf\">Language Models are Unsupervised Multitask Learners</a></p>\n<h2>Abstract</h2>\n<ul>\n<li>Only unsupervised pre-training (fine-tuning x)</li>\n<li>Zero-shot으로 downstream task를 진행할 수 있는 General language model을 개발하자.</li>\n</ul>\n<br>\n<h2>Introduction</h2>\n<p>여러 NLP task는 특정 task에 맞는 datasets을 가지고 supervised learning을 진행했다. 하지만 저자들은 이러한 모델이 <code class=\"language-text\">Narrow Expert</code> 로서 데이터 분포의 변화 혹은 Task의 변화에 매우 취약하다고 주장한다. Domain과 Task에 특화된 방법이 오히려 모델의 <code class=\"language-text\">Generalization</code> 능력을 저해하기 때문이다.<br>\n또한 Multi-Task learning은 다양한 Domain과 Task를 동시에 수행하며 학습하는 방법으로서, Generalization 성능을 높일 수 있다. 하지만, 이를 위해서는 많은 양질의 학습 데이터를 수집하는 것과 적합한 objective function를 설정하는 것이 필요하다.<br>\n그래서 WebText라고 불리는 수백만 웹 페이지의 데이터로 explicit supervision 없이 language models을 학습하고, Zero-shot downstream task가 가능한 언어 모델 GPT-2를 소개한다.</p>\n<br>\n<h3>❓ <code class=\"language-text\">zero-shot</code>, <code class=\"language-text\">few-shot</code>이 뭐야?</h3>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137766145-e4dd8db8-b74c-4b83-b71d-04f02207296d.png\" alt=\"image\"><br>\n학습에 사용하는 데이터셋을 서포트 데이터, 테스트에 사용하는 데이터셋을 쿼리 데이터라고 한다.<br>\n이러한 퓨샷 러닝 태스크를 <code class=\"language-text\">N-way K-shot 문제</code>라고 부른다. N은 범주의 수, K는 범주별 서포트 데이터의 수를 의미한다.<br>\n위의 사진처럼 2개의 범주(고양이, 자동차), 범주당 5장의 이미지가 주어진 문제를 2-way 5-shot 문제라고 한다. 그러므로 zero-shot은 데이터를 한번도 안보고 테스트 하는 것을 의미한다.</p>\n<br>\n<h2>Approach</h2>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137767440-2c38b4c7-f1d4-4a73-9095-14a2d26c71e8.png\" alt=\"image\"><br>\nLanguage modeling 방법으로 접근하였고, 조건부 확률로 sequential하게 다음 단어를 예측한다.</p>\n<h3>Training Dataset</h3>\n<p>GPT1에서는 News articles나 Wikipedia 같은 single domain text를 사용했다. 하지만 이번에는 다양한 도메인의 데이터셋을 만들기위해 직접 web crawling을 하여 데이터를 제작하였다.<br>\nReddit에서 3 karma(페이스북 좋아요 같은 것) 이상을 받은 2017년 12월 전 post만 가져와서 wikipedia와 중복 되는 부분을 삭제하고 40GB text, 총 8 million개의 문서를 생성했다.</p>\n<h3>Input Representation</h3>\n<p>본 논문에서는 Byte Pair Encoding(BPE) 방식을 채택하였다. BPE는 subword 기반의 인코딩 방법으로, 문자 단위로 단어를 분해하여 vocabulary를 생성하고 반복을 통해 빈도수가 높은 문자 쌍을 지속적으로 vocabulary에 추가하는 방법이다. Byte Pair Encoding(BPE)에 대한 더 자세한 내용은 <a href=\"https://github.com/sooftware/engineering-is-all-you-need/blob/main/notes/tokenizer.md#bpebyte-pair-encoding\">링크</a>를 참고해주세요!<br>\n유니코드 수준의 BPE는 13만 개 이상의 매우 큰 vocabulary가 필요하다. 하지만 Byte 수준의 BPE는 오직 256개의 vocabulary만을 필요로 한다. 따라서 저자들은 BPE를 유니코드 수준이 아닌, Byte 수준으로 적용하는 시도를 하였다고 한다.</p>\n<h3>Model</h3>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137771853-dd00cc8a-a3d3-4984-8dc2-46dc8803e061.png\" alt=\"image\"><br>\n<img src=\"https://user-images.githubusercontent.com/54731898/137771879-4f171263-5705-48d6-886c-005c0d9ae47c.png\" alt=\"image\"><br>\n모델 구조는 GPT-1의 구조와 거의 동일하다. 차이점은 다음과 같다.</p>\n<ul>\n<li>normalization 레이어를 각 하위 블록의 입력으로 이동.</li>\n<li>residual layer의 깊이 N에 따라 1/√N * weights를 사용하여 residual layer의 가중치를 설정.</li>\n<li>vocabulary의 크기가 50,257개로 증가.</li>\n<li>한번에 입력가능한 context size가 512에서 1024로 증가.</li>\n</ul>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137774457-a1dd9717-7693-4d4d-8861-646b239262c1.png\" alt=\"image\"><br>\n4가지의 모델 사이즈가 있고, base가 BERT의 라지사이즈와 동일하다.</p>\n<br>\n<h2>Experiments</h2>\n<p><img src=\"https://user-images.githubusercontent.com/54731898/137773933-47a1b4db-79bc-437a-8df7-0b7e1b0ca705.png\" alt=\"image\"><br>\nFine-tuning을 진행하지 않은 zero-shot 환경임에도 불구하고 8개의 데이터셋중 7개에서 SOTA를 달성하였다.</p>\n<h3>Question Answering</h3>\n<p>QA task에서 일반적으로 사용하는 ‘정확히 일치 하는지’ 여부(exact match metric)를 지표로 비교하였을 때에는 4.1%의 정확도로 기존의 모델들보다 5.3배 높은 정확도를 보였다.</p>\n<p>아래의 표는 GPT-2가 질문에 대한 답변을 한 결과이다.<br>\n<img src=\"https://user-images.githubusercontent.com/54731898/137775894-da8f8e21-71a3-4aaf-801b-cf3e70bbfaac.png\" alt=\"image\"></p>\n<h2>Generalization vs Memorization</h2>\n<p>Train set과 Test set의 과도한 중복(Overlap)은 모델의 memorization을 유도하고 generalization 성능을 왜곡하여 나타낼 수 있다.<br>\n이러한 현상은 저자들이 생성한 WebText 데이터셋에서도 나타날 수 있다.<br>\n다음 표는 벤치마크 데이터 Test set과의 overlap 정도를 보여준다. 8-gram으로 겹치는 정도를 데이터 간에 비교해서 측정했다고 한다.<br>\n보통 1~6% overlap되고, 평균적으로 3.2% overlap된다고 한다. 본 논문에서는 de-duplication 기반의 n-gram overlap 사용을 추천하고 있다.<br>\n<img src=\"https://user-images.githubusercontent.com/54731898/137777245-b93090c8-8d03-4bd2-9d7f-a6e57b07f43b.png\" alt=\"image\"></p>\n<br>  \n<p><img src=\"https://user-images.githubusercontent.com/54731898/137776893-d9db9439-7757-4805-ada4-09acff67767a.png\" alt=\"image\"><br>\n또한 모델의 크기가 커질수록 train과 test 모두 perplexity가 떨어지는 것을 확인할 수 있다. 즉 GPT-2조차 WebText 데이터셋에 아직 underfitting 되어 더 개선될 여지가 있음을 보여준다.</p>\n<h2>Discussion</h2>\n<ul>\n<li>Unsupervised task learning 영역도 중요.</li>\n<li>Supervision 없이 task를 배우는 pre-training 기술도 가능성이 있다.</li>\n<li>GPT-2로 많은 zero-shot task에 성능을 측정해보았을 때, 몇 개만 baseline보다 좋은 것이지 각 태스크를 fine-tuning한 모델들이 성능이 더 좋다.</li>\n<li>BERT에서 unidirectional representation은 비효율적이라 했는데 GPT-2가 이런 것을 극복하기에 충분한지 아직 불분명하다.</li>\n</ul>\n<br>\n<h2>Conclusion</h2>\n<p>GPT-2는 GPT-1 모델을 기반으로 하여 Unsupervised pre-training 작업을 극대화시킨 pretrained language model이다.<br>\nZero-shot으로 어느정도 유의미한 결과값을 얻었기 때문에 사이즈가 더 큰 모델과 다양한 데이터셋으로 pre-training하면 성능이 더 좋아질 수 있다.</p>\n<br>\n<h2>Reference</h2>\n<ul>\n<li><a href=\"https://openai.com/blog/language-unsupervised\">https://openai.com/blog/language-unsupervised</a></li>\n<li><a href=\"https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf\">https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf</a></li>\n<li><a href=\"https://www.kakaobrain.com/blog/106\">https://www.kakaobrain.com/blog/106</a></li>\n</ul>","htmlAst":{"type":"root","children":[{"type":"element","tagName":"h1","properties":{},"children":[{"type":"text","value":"GPT (Generative Pre-trained Transformer)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137573333-0e67caea-e8cb-4886-9ed0-46fa610d91d0.PNG","alt":"1"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"gpt1 먼저 알아보고, gpt2에 대해 알아보겠습니다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h1","properties":{},"children":[{"type":"text","value":"GPT1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf"},"children":[{"type":"text","value":"Improving Language Understanding by Generative Pre-Training"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Abstract"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"다양한 라벨링 되지 않은 데이터로 unsupervised pre-training하고, 라벨링 되어있는 데이터로 특정 task에 supervised fine-tuning 하는 self-supervised 학습을 한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"각 task마다 input 형태를 조금씩만 다르게하면 좋은 성능을 보일 수 있는 범용적인 representation을 학습한다."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Introduction"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"기존 NLP모델들은 labeled된 데이터를 바탕으로 지도학습을 했다. 하지만 존재하는 데이터는 unlabeled data가 훨씬 많기 때문에, unlabeled data의 정보를 활용한다면 효과적으로 학습할 수 있었다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"But, 어떤 objective function이 유용한 text representation을 배우는데 효과적인지 알 수 없었다."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"그리고 이전까지는 각각의 task마다 모델을 학습시켰기 때문에 범용적으로 학습된 모델을 다른 NLP task에 어떻게 사용할 것인지 명확한 방법이 존재하지 않았다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"이러한 한계점들을 보완하고자 unsupervised pre-training과 supervised fine-tuning을 한 semi-supervised를 사용하였다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Framework"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"모델의 학습은 다음과 같이 2단계로 나타낼 수 있다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"라벨링되지 않은 대량 데이터를 이용하여 범용적인 언어모델을 학습"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"라벨링 데이터를 이용하여 특정 task에 맞춰 모델을 fine-tuning"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Unsupervised pre-training"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"라벨링되지 않은 데이터 u가 주어졌을 때, 다음과 같은 likelihood를 최대화 하기위해 language modeling objective funtion을 사용한다.\n"},{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137592007-c617d2a3-cdf1-4e1a-a73b-dd027f8f03d5.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nk는 context window이고, Θ는 parameter이다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137592144-d0adde20-0da4-487c-9217-bd0a7537903b.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"language modeling objective funtion을 쉽게 표현하면 다음과 같다. 맞출 단어의 이전 단어들을 보고 해당 단어를 맞추는 것이다. 예를 들어, 위의 사진에서 정답 문장이 “다음 단어를 떠올리면 됩니다.” 일 때, 사진에서 정답(ground truth)은 “리면”이 된다. 그래서 모델은 이전 단어인 “다음 단어를 떠올”을 보고 여러 가지 토큰들 중에서 “리면”이 나올 likelihood를 최대화하는 방향으로 학습을 진행한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137592439-d1e34ad4-ccd7-4bac-ad8b-e17be3398a3a.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"또한 GPT는 Transformer의 변형인 multi-layer Transformer decoder를 사용한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137593453-cf69c0e3-32bf-4361-ae5e-230fce52b9bc.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"token embedding 값과 position embedding 값을 더해준다. 그리고 transformer_block을 n번 통과하고 vocab 사이즈만큼 linear 해준 후 softmax를 취해준다.\nn은 layer의 수, We는 token embedding 행렬, Wp는 position embedding 행렬이다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Supervised fine-tuning"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137593397-8aa2714c-091d-41de-a1e9-3c0a83ae378e.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"위에서 학습한 언어 모델을 task에 맞춰 fine-tuning 한다. 앞서 학습한 pre-trained 모델을 통과하고 label y값을 예측하기 위해 linear 해준 후 softmax를 취해준다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"또한 fine-tuning 단계에서 학습을 돕기 위해 언어모델을 보조 objective function으로 포함시켰다고 한다. 첫 번째 이유는 supervised 모델의 일반화(범용성)를 향상시키기 위해서이고, 두 번째 이유는 수렴을 빠르게 해주기 때문이다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"그래서 아래와 같은 목적함수를 최적화한다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137593826-48ce3aa6-a494-48bb-be1a-a0cc0f4dfb89.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Task-specific input transformations"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137593951-4927546d-9138-4918-b520-bc3d3684973b.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"위에서 언급한 것 처럼 task에 맞게 input 형태를 적절하게 변형시켜주어야한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"스폐셜 토큰으로는 문장의 시작을 알리는 start 토큰 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<s>"}]},{"type":"text","value":", 문장의 끝을 알리고 BERT의 CLS 토큰 역할을 하는 extract 토큰 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<e>"}]},{"type":"text","value":", BERT의 SEP 토큰처럼 문장을 이어주는 delimeter 토큰 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"$"}]},{"type":"text","value":"이 있다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{},"children":[{"type":"text","value":"Textual entailment"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"전제 p와 가정 h를 delimeter 토큰"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"$"}]},{"type":"text","value":"로 연결하였다."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{},"children":[{"type":"text","value":"Similarity"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"두 개의 텍스트의 순서가 없으므로 두 개를 다른 순서로 이어붙여 총 2개를 입력으로 쓴다. (data augmentation)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"이는, Transformer에 각각의 입력으로 들어간다."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{},"children":[{"type":"text","value":"Question Answering and Commonsense Reasoning (Multiple Choice)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"document context를 z, question을 q, 가능한 답변을 ak라고 하면, context와 question을 이어붙여 위 사진의 Context 부분을 만들고 delimeter 토큰"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"$"}]},{"type":"text","value":"과 answer을 이어준다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n수식으로 표현하면 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[z;q;$;ak]"}]},{"type":"text","value":" 이러한 형태이고, 각각 독립적으로 모델에 전달된다."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Conclusion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"당시만해도 pre-training과 fine-tuning이 익숙하지 않았었는데, unsupervised pre-training을 통해 많은 성능 향상이 있었고, 그 모델로 여러가지 nlp task를 푸는데 성공하였다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h1","properties":{},"children":[{"type":"text","value":"GPT2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf"},"children":[{"type":"text","value":"Language Models are Unsupervised Multitask Learners"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Abstract"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Only unsupervised pre-training (fine-tuning x)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Zero-shot으로 downstream task를 진행할 수 있는 General language model을 개발하자."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Introduction"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"여러 NLP task는 특정 task에 맞는 datasets을 가지고 supervised learning을 진행했다. 하지만 저자들은 이러한 모델이 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Narrow Expert"}]},{"type":"text","value":" 로서 데이터 분포의 변화 혹은 Task의 변화에 매우 취약하다고 주장한다. Domain과 Task에 특화된 방법이 오히려 모델의 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Generalization"}]},{"type":"text","value":" 능력을 저해하기 때문이다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n또한 Multi-Task learning은 다양한 Domain과 Task를 동시에 수행하며 학습하는 방법으로서, Generalization 성능을 높일 수 있다. 하지만, 이를 위해서는 많은 양질의 학습 데이터를 수집하는 것과 적합한 objective function를 설정하는 것이 필요하다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n그래서 WebText라고 불리는 수백만 웹 페이지의 데이터로 explicit supervision 없이 language models을 학습하고, Zero-shot downstream task가 가능한 언어 모델 GPT-2를 소개한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"❓ "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"zero-shot"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"few-shot"}]},{"type":"text","value":"이 뭐야?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137766145-e4dd8db8-b74c-4b83-b71d-04f02207296d.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n학습에 사용하는 데이터셋을 서포트 데이터, 테스트에 사용하는 데이터셋을 쿼리 데이터라고 한다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n이러한 퓨샷 러닝 태스크를 "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"N-way K-shot 문제"}]},{"type":"text","value":"라고 부른다. N은 범주의 수, K는 범주별 서포트 데이터의 수를 의미한다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n위의 사진처럼 2개의 범주(고양이, 자동차), 범주당 5장의 이미지가 주어진 문제를 2-way 5-shot 문제라고 한다. 그러므로 zero-shot은 데이터를 한번도 안보고 테스트 하는 것을 의미한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Approach"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137767440-2c38b4c7-f1d4-4a73-9095-14a2d26c71e8.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nLanguage modeling 방법으로 접근하였고, 조건부 확률로 sequential하게 다음 단어를 예측한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Training Dataset"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"GPT1에서는 News articles나 Wikipedia 같은 single domain text를 사용했다. 하지만 이번에는 다양한 도메인의 데이터셋을 만들기위해 직접 web crawling을 하여 데이터를 제작하였다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nReddit에서 3 karma(페이스북 좋아요 같은 것) 이상을 받은 2017년 12월 전 post만 가져와서 wikipedia와 중복 되는 부분을 삭제하고 40GB text, 총 8 million개의 문서를 생성했다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Input Representation"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"본 논문에서는 Byte Pair Encoding(BPE) 방식을 채택하였다. BPE는 subword 기반의 인코딩 방법으로, 문자 단위로 단어를 분해하여 vocabulary를 생성하고 반복을 통해 빈도수가 높은 문자 쌍을 지속적으로 vocabulary에 추가하는 방법이다. Byte Pair Encoding(BPE)에 대한 더 자세한 내용은 "},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sooftware/engineering-is-all-you-need/blob/main/notes/tokenizer.md#bpebyte-pair-encoding"},"children":[{"type":"text","value":"링크"}]},{"type":"text","value":"를 참고해주세요!"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n유니코드 수준의 BPE는 13만 개 이상의 매우 큰 vocabulary가 필요하다. 하지만 Byte 수준의 BPE는 오직 256개의 vocabulary만을 필요로 한다. 따라서 저자들은 BPE를 유니코드 수준이 아닌, Byte 수준으로 적용하는 시도를 하였다고 한다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Model"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137771853-dd00cc8a-a3d3-4984-8dc2-46dc8803e061.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137771879-4f171263-5705-48d6-886c-005c0d9ae47c.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n모델 구조는 GPT-1의 구조와 거의 동일하다. 차이점은 다음과 같다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"normalization 레이어를 각 하위 블록의 입력으로 이동."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"residual layer의 깊이 N에 따라 1/√N * weights를 사용하여 residual layer의 가중치를 설정."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vocabulary의 크기가 50,257개로 증가."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"한번에 입력가능한 context size가 512에서 1024로 증가."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137774457-a1dd9717-7693-4d4d-8861-646b239262c1.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n4가지의 모델 사이즈가 있고, base가 BERT의 라지사이즈와 동일하다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Experiments"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137773933-47a1b4db-79bc-437a-8df7-0b7e1b0ca705.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nFine-tuning을 진행하지 않은 zero-shot 환경임에도 불구하고 8개의 데이터셋중 7개에서 SOTA를 달성하였다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Question Answering"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"QA task에서 일반적으로 사용하는 ‘정확히 일치 하는지’ 여부(exact match metric)를 지표로 비교하였을 때에는 4.1%의 정확도로 기존의 모델들보다 5.3배 높은 정확도를 보였다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"아래의 표는 GPT-2가 질문에 대한 답변을 한 결과이다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137775894-da8f8e21-71a3-4aaf-801b-cf3e70bbfaac.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Generalization vs Memorization"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Train set과 Test set의 과도한 중복(Overlap)은 모델의 memorization을 유도하고 generalization 성능을 왜곡하여 나타낼 수 있다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n이러한 현상은 저자들이 생성한 WebText 데이터셋에서도 나타날 수 있다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n다음 표는 벤치마크 데이터 Test set과의 overlap 정도를 보여준다. 8-gram으로 겹치는 정도를 데이터 간에 비교해서 측정했다고 한다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n보통 1~6% overlap되고, 평균적으로 3.2% overlap된다고 한다. 본 논문에서는 de-duplication 기반의 n-gram overlap 사용을 추천하고 있다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137777245-b93090c8-8d03-4bd2-9d7f-a6e57b07f43b.png","alt":"image"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"  \n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://user-images.githubusercontent.com/54731898/137776893-d9db9439-7757-4805-ada4-09acff67767a.png","alt":"image"},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n또한 모델의 크기가 커질수록 train과 test 모두 perplexity가 떨어지는 것을 확인할 수 있다. 즉 GPT-2조차 WebText 데이터셋에 아직 underfitting 되어 더 개선될 여지가 있음을 보여준다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Discussion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Unsupervised task learning 영역도 중요."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Supervision 없이 task를 배우는 pre-training 기술도 가능성이 있다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"GPT-2로 많은 zero-shot task에 성능을 측정해보았을 때, 몇 개만 baseline보다 좋은 것이지 각 태스크를 fine-tuning한 모델들이 성능이 더 좋다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"BERT에서 unidirectional representation은 비효율적이라 했는데 GPT-2가 이런 것을 극복하기에 충분한지 아직 불분명하다."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Conclusion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"GPT-2는 GPT-1 모델을 기반으로 하여 Unsupervised pre-training 작업을 극대화시킨 pretrained language model이다."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nZero-shot으로 어느정도 유의미한 결과값을 얻었기 때문에 사이즈가 더 큰 모델과 다양한 데이터셋으로 pre-training하면 성능이 더 좋아질 수 있다."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Reference"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://openai.com/blog/language-unsupervised"},"children":[{"type":"text","value":"https://openai.com/blog/language-unsupervised"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf"},"children":[{"type":"text","value":"https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://www.kakaobrain.com/blog/106"},"children":[{"type":"text","value":"https://www.kakaobrain.com/blog/106"}]}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}},"excerpt":"GPT (Generative Pre-trained Transformer) 1 gpt1 먼저 알아보고, gpt2에 대해 알아보겠습니다. GPT1 Improving Language Understanding by Generative Pre-Training…","fields":{"readingTime":{"text":"13 min read"}},"frontmatter":{"title":"Sooftware NLP - GPT (Generative Pre-trained Transformer)","userDate":"23 November 2021","date":"2021-11-23T11:00:00.000Z","tags":["nlp","parallelism","large-scale","lm"],"excerpt":null,"image":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/833f7784ccf61f40030aff940fe3ac06/7eac2/gpt.png","srcSet":"/static/833f7784ccf61f40030aff940fe3ac06/7eac2/gpt.png 716w","sizes":"100vw"},"sources":[{"srcSet":"/static/833f7784ccf61f40030aff940fe3ac06/4c8d7/gpt.webp 716w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6061452513966481}}},"author":[{"id":"Soohwan Kim","bio":"Co-founder/A.I. engineer at TUNiB.","avatar":{"children":[{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#282838","images":{"fallback":{"src":"/static/a9e6b445142b247ee4cfa66155398bb2/0d6f4/soohwan.png","srcSet":"/static/a9e6b445142b247ee4cfa66155398bb2/248f9/soohwan.png 40w,\n/static/a9e6b445142b247ee4cfa66155398bb2/fd435/soohwan.png 80w,\n/static/a9e6b445142b247ee4cfa66155398bb2/0d6f4/soohwan.png 120w","sizes":"100vw"},"sources":[{"srcSet":"/static/a9e6b445142b247ee4cfa66155398bb2/e7f45/soohwan.webp 40w,\n/static/a9e6b445142b247ee4cfa66155398bb2/589ec/soohwan.webp 80w,\n/static/a9e6b445142b247ee4cfa66155398bb2/71a38/soohwan.webp 120w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6833333333333333}}]}}]}},"relatedPosts":{"totalCount":50,"edges":[{"node":{"id":"6529d72e-80e7-5d61-a672-d66276a3f641","excerpt":"MoE(Mixture of Experts) 기초부터 DeepSeek 혁신까지 작년 이맘때쯤 DeepSeek-V3가 저비용으로 엄청난 성능을 보이면서 화제가 되었습니다. 그 핵심 기술인 MoE(Mixture of Experts…","frontmatter":{"title":"MoE(Mixture of Experts) 기초부터 DeepSeek 혁신까지","date":"2026-01-15T01:11:55.000Z"},"fields":{"readingTime":{"text":"8 min read"},"slug":"/developed-moe/"}}},{"node":{"id":"8b49d3ef-4ce3-568c-9d71-240ff17fc3e0","excerpt":"BERT는 사실 Diffusion 모델이였다?! 최근 굉장히 흥미로운 글을 읽게되어 공유합니다. 원문 : link BERT와 Diffusion이 같은 방식이다?! NLP 연구자들에게 BERT는 너무 익숙한 모델입니다. 201…","frontmatter":{"title":"BERT는 사실 Diffusion 모델이였다?!","date":"2025-10-21T12:00:00.000Z"},"fields":{"readingTime":{"text":"8 min read"},"slug":"/bert_diffusion/"}}},{"node":{"id":"7c7e1676-ea84-58de-970c-ddec9aa10660","excerpt":"RLHF는 수다쟁이를 만든다?! (Does RLHF Breed Verbose Chatterboxes?!) RLHF(Reinforcement Learning from Human Feedback)는 OpenAI의 ChatGPT…","frontmatter":{"title":"RLHF는 수다쟁이를 만든다?! (Does RLHF Breed Verbose Chatterboxes?!)","date":"2024-03-13T01:11:55.000Z"},"fields":{"readingTime":{"text":"7 min read"},"slug":"/rlhf-vervosity/"}}},{"node":{"id":"2b9d3e22-1796-5fab-878d-5941d2e76e9d","excerpt":"LLM Paper Abstract - 2023.12 LLM…","frontmatter":{"title":"LLM Paper Abstract - 2023.12","date":"2024-01-05T10:00:00.000Z"},"fields":{"readingTime":{"text":"5 min read"},"slug":"/llm-abs-202312/"}}},{"node":{"id":"f43fa33b-917b-5c00-8462-937d99592ad7","excerpt":"What it MoE? (Mixture of Experts) 현존 최강 LLM인 GPT-4에서 “MoE (Mixture of Experts)” 방식을 채택하여 사용하고 있다고 알려졌는데요, 최근 AI계의 뜨거운 감자 Mistral AI…","frontmatter":{"title":"What is MoE? (Mixture of Experts)","date":"2023-12-22T01:11:55.000Z"},"fields":{"readingTime":{"text":"9 min read"},"slug":"/moe/"}}}]}},"pageContext":{"slug":"/gpt/","prev":{"excerpt":"Large Scale LM (2) Distributed Programming (작성중) 이 자료는 [해당 link…","frontmatter":{"title":"Sooftware NLP - Large Scale LM (2) Distributed Programming","tags":["nlp","parallelism","large-scale","lm"],"date":"2021-11-22T11:00:00.000Z","draft":false,"excerpt":null,"image":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABL0lEQVQY002OW0sCURSF/f8PPfQUIQT1Uj2UJBgZvVR4ATMVEy+gQpqlzjg3ZzxnzpkvnHGmNmz24mOvtXcuiiJMy2NlOCzXTqxdL2BlOvzYNnPLxfYljutjuh5rd4vh7ghEiOkGWW+8HfusXATcPb5zVaxxWaxRKL/R6n1ydvvM9WuTo2KF6uCbQqnOeblK/qnOyUObznjJ8U2di3Kb02KDfKmJVJrcPnVfw/GMbn9KWsL3aQxbbIMgY/PFhNF8AokFFUoG0y8Wqw0pzGmdiNF4TudjHGsdRWgZ8tJtEIQKDkcHkyH1QT8JUyqe95Ue7dEs8eno70PPdbAsM/tGaYVlWKgwzJjvBziWHevUZ6yXbEwjY1mglBIhRGaOtEZIES+lO1or5OFAyoSQhP/YLx8cxPDPpKPhAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/346eaa433ec4cadd1f537f0536913cd3/ca97d/big-model2.png","srcSet":"/static/346eaa433ec4cadd1f537f0536913cd3/260a8/big-model2.png 750w,\n/static/346eaa433ec4cadd1f537f0536913cd3/99085/big-model2.png 1080w,\n/static/346eaa433ec4cadd1f537f0536913cd3/cff5f/big-model2.png 1366w,\n/static/346eaa433ec4cadd1f537f0536913cd3/ca97d/big-model2.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/346eaa433ec4cadd1f537f0536913cd3/72019/big-model2.webp 750w,\n/static/346eaa433ec4cadd1f537f0536913cd3/acb5c/big-model2.webp 1080w,\n/static/346eaa433ec4cadd1f537f0536913cd3/41355/big-model2.webp 1366w,\n/static/346eaa433ec4cadd1f537f0536913cd3/a0759/big-model2.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.30885416666666665}}},"author":[{"id":"Soohwan Kim","bio":"Co-founder/A.I. engineer at TUNiB.","avatar":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAADjElEQVQ4y23Oy48TdQDA8TExEaTttvSBfdHddru7bWc6bWd+8+i0u23n0SdlBRQXZGHDgiiLDwgqXjCIJEaC8cLBmHgwUU9EYzRqQuLJi/4NJB6NF+8evgbOHr7XT76SM5ix7s4QnRHnnm9yZzvBTIswN8JcP5bC67ZoWi7CdtFsn5bloZo+dSNAMYbIIqCmD6mJIVXdR3J6I7r9IQ3T59pZlW+uxzndCbPdC/HZXoq3TikowsfqBOjOmFZ7SrM9p2kfRbXn1O0jKNbsSbJ5BMnu9Gl3+qiiz4OPSvz0QRLHFGwOZH6+neLHT5YRbRerM0J0JrTas/8FZXNKzZgg2es+ZtvDdbs8+iHJl+9lWVP7OG2br26k+PvXJCfmFqoYIpwhTXtMwxpTN0coxhjFmCKbE2rGmKoYPQY9qi2fyzsq//4e5sNXi5TlLqbd5t6lPH/9kuDTG2usqgGi7dO0hzSsIXUzQDaGKGKMLEZUxZCKCJB02+PUpMH9vQwP7ybYnSxyfNrjwumA3dEiD94v8cfnK7xzWsbpujQtH9X0qBs+iuEjC5+a7lPVPSqai9SyelyYFbjkh5hqC3TkKOutLON2nkYpgtuMcT6IszdPslo8SLlcpmUH1A0XRQyQhUtNuFQ1l4o2QFI1h3OTVXbcg+grIfSVBRqlEGopgrYSRi0e4KiIse1mScSeopA/iLADmoZL3Rgg631q+oCq1qeq95FOzhQefpzn7eMpBmqcoBVj04pzwkky0eNMRYIdL8F3twusLe2nslrE6g5pGX1U8/FhD1nvUW1tUJK7SH9+n+DR1zF2vQSvH0lz88wiV45V2J1WuHqsxLXNAnuzNJdfWmK5/BylUgFhb6DZAxR9g7rpIos+Wttja2uE9M9vYb69k+DqfJErWzLOuoVqdKlpDo4jODms4zlFckuHObx4iHwuRi6fYqmYY201x/LqMrnFDNl8gRvvukhNdT9394rcOlNFMxrUhYFmW9imTEsp0mhWKC2nWSokyWSiFA7HSKcXiEb34fayyLVniUQk8rmn2drKIqlqiNcuVrh2ymQS1Nh8sc/GoMEbl7u8eb5D1yqTzkRJJsOkkiGymQVShyLE4yHWKnEq1RjpTIhmI8r2y3mkyloI38uha1n6bpVXrkw5+4LD/S/2uHnrIopaJhZ9hmQqwqHkAXJP8BDhyD46ZoWdMxOGcx/PNfECk/8AbxXdRjRliPoAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/a9e6b445142b247ee4cfa66155398bb2/7cf1f/soohwan.png","srcSet":"/static/a9e6b445142b247ee4cfa66155398bb2/34f77/soohwan.png 750w,\n/static/a9e6b445142b247ee4cfa66155398bb2/a94f6/soohwan.png 1080w,\n/static/a9e6b445142b247ee4cfa66155398bb2/7cf1f/soohwan.png 1148w","sizes":"100vw"},"sources":[{"srcSet":"/static/a9e6b445142b247ee4cfa66155398bb2/38420/soohwan.webp 750w,\n/static/a9e6b445142b247ee4cfa66155398bb2/7470d/soohwan.webp 1080w,\n/static/a9e6b445142b247ee4cfa66155398bb2/b5ef6/soohwan.webp 1148w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6829268292682927}}}}]},"fields":{"readingTime":{"text":"17 min read"},"layout":"","slug":"/big-model2/"}},"next":{"excerpt":"# 총, 균, 쇠 (guns germs and steel…","frontmatter":{"title":"총, 균, 쇠 (guns germs and steel)","tags":["book","review"],"date":"2021-11-29T10:00:00.000Z","draft":false,"excerpt":null,"image":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAAESUlEQVQ4y5VVW0ybZRguciqH0gLdhDm3bHLBQYXB0BlI9NYrsptxsyuNotxsUaPRLZkRAwlouGIMMTDOXSNUNAjYA0zCOJVif3AQiiC0tIUCPdBSeoDHfC/5K3X1wjd5833v93//8z3v877f/wuCwSCOjo7Aj/ycd34t5MHw56f3sVFwGoyNfr+fPBAIIBDwh8WRDj19CJsL+AfHx8ew2WwwbhjDDvD5fPB6vfB4PHC73TSymD07OTQQdkgYoHnTDJnsEdbW1hDJAv4A9l0uOBwOLC0twWQy0dxhd0RmyACHhoZoE7NHcjk6u7rBcfMYHx/H0uISDr1eykShUKCmpgYbGxsEyDMNATIzLC+jva0dU1NTFKsHf8IPPR2QdbajrrYW1dXVUKvUWFhYgEwmQ1VVFVQqFex7e+EMGTqzp388RUd7B1ZXVyk+cNnh3XfA5z5h7HF7sGW1YmVlBXK5HA8eNGF0dBRWqzWyhpubmxj8ZRDbtm0C2N2zY0arBTc/T1L4Dg9D2YyMjEDR10cpu5yuZ1MmDc1maNRqqiarrk6nw+zsLMbGxtDW1gaL2Uwp1n3zLZRKFfnjx79hd/c/Up6bm0Pj/Ubo9XqK19fX0dLSgtbWVvT29mL1z1WMqH5Fe/N9yDsforvjIb5vaoycMgH8tQ6VUoWdnR2KmVZdXV0khcFgoLVDr4d0tdusMG+sQa/TYsdme7ZtmLG+YtWzWCwUHwWD0Gq1xHxychLegwM4nU74AwGoNSNQKH5EV3cPrBZrqLnDi2LaBKfn6CVmW9vbMBpNWDYYSPzFxUXs7+/DbreTBP39/Whubqa+jKih/nc96uvrqRjMvmtqxN0vPsPXVV9Rz9XV1UGpVILjOAwMDEDRpyCNGcOIKW9tbWGe4+ByuSj2u/fg3jHB49zFoc8Hp8NBchiNRmLMMtFoNMQ4IsPh4WFq1icTE6Td9PQMpqam6ebMzGihZa6dJWfxxMQktY5ON3dSZR6QfZ6YVVS8D4FAgMQEIblUIkKGVAJpagrSJSlIFScjTSyi+EyaGOefl0KcJERpSQm9H2obHvDTTz7GOYkQElEioqOiIEqIR2qyEOKkeGSkiXBWkoT0lESkixIgSohDkjCWCOTnv/oPIKPKA96+dQsS4XNIFyfTxkgeFSVAdHQ0omNiEBsXT2uFhUXhDNlHk121DysqIIqLQlxsDDKlKai/fR0fXH8DmZmZKLxyBQUF+cjJzsbLeXnIzc3FteIiFBW8gpLS0vCbwqpq27ah/MaNEJObb78Ow8+1GGr4CBfOnUVu1kWU5GfhavYFFGefx7WcF5B3UUp7X8rKipzy3Tt3QoBpSTH4/OabeCv/xdBajEBAuqUkJyLjTDouX7qEnNw8VFZWhqfM3xTWPqxxy8vLcbX4NZSVleGdd9/DvXtfoqGhAT0yGVRqDfR6DmazhaTiezjsr3f6z/d/7d9/wL8B68MRMwJJKHoAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/1c8939ae20fc1d70759ddc0713974d78/a9b4b/ggs.png","srcSet":"/static/1c8939ae20fc1d70759ddc0713974d78/a9b4b/ggs.png 458w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c8939ae20fc1d70759ddc0713974d78/d2c19/ggs.webp 458w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.1855895196506552}}},"author":[{"id":"Soohwan Kim","bio":"Co-founder/A.I. engineer at TUNiB.","avatar":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAADjElEQVQ4y23Oy48TdQDA8TExEaTttvSBfdHddru7bWc6bWd+8+i0u23n0SdlBRQXZGHDgiiLDwgqXjCIJEaC8cLBmHgwUU9EYzRqQuLJi/4NJB6NF+8evgbOHr7XT76SM5ix7s4QnRHnnm9yZzvBTIswN8JcP5bC67ZoWi7CdtFsn5bloZo+dSNAMYbIIqCmD6mJIVXdR3J6I7r9IQ3T59pZlW+uxzndCbPdC/HZXoq3TikowsfqBOjOmFZ7SrM9p2kfRbXn1O0jKNbsSbJ5BMnu9Gl3+qiiz4OPSvz0QRLHFGwOZH6+neLHT5YRbRerM0J0JrTas/8FZXNKzZgg2es+ZtvDdbs8+iHJl+9lWVP7OG2br26k+PvXJCfmFqoYIpwhTXtMwxpTN0coxhjFmCKbE2rGmKoYPQY9qi2fyzsq//4e5sNXi5TlLqbd5t6lPH/9kuDTG2usqgGi7dO0hzSsIXUzQDaGKGKMLEZUxZCKCJB02+PUpMH9vQwP7ybYnSxyfNrjwumA3dEiD94v8cfnK7xzWsbpujQtH9X0qBs+iuEjC5+a7lPVPSqai9SyelyYFbjkh5hqC3TkKOutLON2nkYpgtuMcT6IszdPslo8SLlcpmUH1A0XRQyQhUtNuFQ1l4o2QFI1h3OTVXbcg+grIfSVBRqlEGopgrYSRi0e4KiIse1mScSeopA/iLADmoZL3Rgg631q+oCq1qeq95FOzhQefpzn7eMpBmqcoBVj04pzwkky0eNMRYIdL8F3twusLe2nslrE6g5pGX1U8/FhD1nvUW1tUJK7SH9+n+DR1zF2vQSvH0lz88wiV45V2J1WuHqsxLXNAnuzNJdfWmK5/BylUgFhb6DZAxR9g7rpIos+Wttja2uE9M9vYb69k+DqfJErWzLOuoVqdKlpDo4jODms4zlFckuHObx4iHwuRi6fYqmYY201x/LqMrnFDNl8gRvvukhNdT9394rcOlNFMxrUhYFmW9imTEsp0mhWKC2nWSokyWSiFA7HSKcXiEb34fayyLVniUQk8rmn2drKIqlqiNcuVrh2ymQS1Nh8sc/GoMEbl7u8eb5D1yqTzkRJJsOkkiGymQVShyLE4yHWKnEq1RjpTIhmI8r2y3mkyloI38uha1n6bpVXrkw5+4LD/S/2uHnrIopaJhZ9hmQqwqHkAXJP8BDhyD46ZoWdMxOGcx/PNfECk/8AbxXdRjRliPoAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/a9e6b445142b247ee4cfa66155398bb2/7cf1f/soohwan.png","srcSet":"/static/a9e6b445142b247ee4cfa66155398bb2/34f77/soohwan.png 750w,\n/static/a9e6b445142b247ee4cfa66155398bb2/a94f6/soohwan.png 1080w,\n/static/a9e6b445142b247ee4cfa66155398bb2/7cf1f/soohwan.png 1148w","sizes":"100vw"},"sources":[{"srcSet":"/static/a9e6b445142b247ee4cfa66155398bb2/38420/soohwan.webp 750w,\n/static/a9e6b445142b247ee4cfa66155398bb2/7470d/soohwan.webp 1080w,\n/static/a9e6b445142b247ee4cfa66155398bb2/b5ef6/soohwan.webp 1148w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6829268292682927}}}}]},"fields":{"readingTime":{"text":"5 min read"},"layout":"","slug":"/guns-germs-and-steel/"}},"primaryTag":"nlp"}},
    "staticQueryHashes": ["3170763342","3229353822"]}