Learning Frameworks in NLP (1/2)

1. Intro

최근에 KoLIMA라는 사이드 프로젝트를 하나 시작했습니다. 2023년 5월에 Meta AI에서 발표한 LIMA: Less Is More for Alignment라는 모형에서 사용한 방법론이 한국어 언어 모형에도 적용 가능한지 확인해보고자 하는 목적에서 진행하는 프로젝트입니다.

Read more

Dependency in Language

지난 이야기

지난 글에서는 언어 모델을 ‘모든 후보 문자열에 대한 확률 분포’로 정의하였습니다. 그리고 확률을 추정하기 위한 방법으로 MLE Maximum Likelihood Estimation에 대해 살펴보고, 언어의 변동성으로 인한 문제를 해결하기 위해 문장을 단어들의 조합으로 바라보는 관점에 대해 알아보았습니다. 그러나 이러한 접근법에는 문제가 하나 있었죠. 바로 단어들이 나타나는 순서를 고려하지 못한다는 점이었습니다. 이번 글에서는 이러한 문제를 조금 더 일반적인 관점에서 자세히 살펴보고, 이를 완화할 수 있는 방법 중 하나인 N-gram 모델에 대해 알아보도록 하겠습니다.

Read more

Knowledge Integration in Language Models

들어가며 Intro

최근 OpenAI의 ChatGPT로부터 시작된 언어모형에 대한 관심이 뜨겁습니다. 마치 알파고와 이세돌 9단 사이의 바둑 대국 이후에 일어났던 인공지능 분야에 대한 관심이 재현된 것만 같네요. ChatGPT가 이러한 뜨거운 관심을 받고 있는 이유는, 마치 사람과도 같은 자연스러운 문장을 생성할 수 있을 뿐만 아니라, 일반적인 질의 응답을 넘어서 간단한 추론, 연산, 프로그래밍 등의 같은 다양한 작업들을 수행할 수 있기 때문으로 보입니다. 그러나 ChatGPT에도 여전히 극복해야할 다양한 문제점들이 남아있으며, 대표적인 과제 중 하나는 바로 언어 모형의 신뢰성Reliability에 대한 부분입니다. 이 글에서는 언어 모형이 사실에 기반하지 않은 내용을 마치 사실처럼 지어내는 환각 현상Hallucination에 대해 알아보고, 이를 완화하기 위해 어떤 방법들이 연구되어 왔는지 간단하게 리뷰해보도록 하겠습니다.

Read more

Language Models

결론부터 이야기하자면, 언어 모델language model은 각 문자열에 확률을 부여한 확률 모형probabilistic model of strings이고, 언어 모델링language modelling은 이러한 확률을 부여하기 위한 과정을 의미합니다. 이 글에서는 어떠한 맥락에서 이러한 정의가 성립하는지 살펴보도록 하겠습니다.

우리가 한국어를 할 줄 안다는 것은 무엇을 의미할까요? 친구가 우리에게 ‘오늘 뭐 해?’라고 물어본 상황을 한 번 가정해보겠습니다. 우리가 질문을 정확히 이해했다면 아마 다음의 (1), (2)번과 같은 대답들을 떠올릴 수 있을 것입니다. 한편, 동일한 질문에 대해서 (3)번이나 (4)번처럼 대답할 일은 별로 없겠죠.

Read more

Weekly-NLP, Introduction

공부했던 내용을 정리하고 기록으로 남기고자 하는 목적으로 글을 작성해 보고자 합니다. 이 시리즈는 크게 두 파트로 나뉘어질 예정입니다. 첫번째 파트에서는 NLP Tasks를 모델링하기 위한 기본적인 지식들에 대해서 다루며, 다음과 같은 개념들에 대해 살펴볼 예정입니다.

  • Language Models
  • Word Dependencies and N-gram Model
  • RNN
  • LSTM
  • Sequence to Sequence (Encoder and Decoder) Architecture
  • Attention
  • Transformer blocks and Transformer
Read more

[Information Theory #1] Entropy에 대한 이해 I

1. 배경

요즘에 참여하고 있는 프로젝트에서 참조하는 논문 중 하나가 Multi-dimensional mutual information을 objective function으로 forwarding searching을 수행함으로써 효과적인 변수 탐색을 할 수 있다는 내용을 담고있다.

Read more

나를 위해 기록하는 Jupyter - HTML/PDF 변환 프로세스

노트북(.ipynb) 파일은 물론 Reproducible Research의 개념에 매우 잘 어울리는 포멧이다. 그러나 우리는 블로그 작성을 위해서라거나, Reproducibility에는 전혀 관심이 없을 분들을 위한 최종 보고서 작성을 위해서라거나, 파일 수신자가 노트북 파일을 실행할 수 없는 환경에 있다는 등의 다양한 이유로 노트북 파일을 보다 일반적인 형태의 문서로 변환해야하는 상황과 마주친다.

편리하게도 Jupyter Lab은 다양한 형태로 문서를 내보내는 기능을 제공한다. 노트북 파일을 HTML이나 LaTeX 포멧으로 내보낼수도 있고, 내부적으로 pandoc을 이용하여 pdf로 변환하는 기능도 제공하고 있다. 이러한 과정에서 사용자가 포멧을 직접 설정할 할 수 있는 기능들이 일부 존재하기도 하지만, 아무래도 변환 도구들을 직접 사용하는 것이 아니라 Jupyter를 통해서 접근하는 것이기 때문에 상대적으로 번거롭고 자유도도 떨어진다. 이를 테면 지정된 위치에 custom.css 파일을 작성해놓으면 그 파일을 이용하여 HTML로 내보내준다거나, Pandoc 관련된 옵션을 수동으로 수정할 수 있다거나 하는 식이다.

Read more

[Taes' R #3] 분석을 위한 데이터셋의 형태 변환과 결합에 대하여

1. 지난 이야기

지난 글에서는 데이터가 표현될 수 있는 다양한 형태들에 대해 살펴보았다. 이 글에서는 그 중 하나였던 Wide/Long Form 전환의 필요성에 대해 다룰 예정이다. 원활한 이해를 위해 업무로 수행했던 분석 과제 중 하나를 매우 간소화해서 예제로 제시하고, 이를 함께 해결해보고자 한다.

Read more

[Taes' R #2] '좋은 형태의 데이터'와 'Tidiness'에 대하여

1. 지난 이야기

지난 글에서는 일관된 인터페이스(Consistent Interface)에 대해 살펴보았다. 오늘의 주제에 대해 이야기 하기에 앞서, 잠시 분석 프로세스를 최대한 멀리서 한 번 바라보도록 하자. R을 이용한 데이터 분석을 최대한 간단하게 나타낸다면, 다음과 같이 ‘데이터’를 분석을 위한 ‘함수’에 넣어서 ‘분석 결과’를 도출하는 과정으로 표현할 수 있을 것 같다.

Read more