전체 글(137)
-
Pytorch로 시작하는 딥러닝 입문(10-05. 펄플렉서티: perplexity, PPL)
두 개의 모델 A, B가 있을 때 모델의 성능을 어떻게 비교할 수 있을까? 두 모델을 오타 교정, 기계 번역 등의 평가에 투입한 후, 해당 업무를 어느 모델이 잘 수행했는지를 비교할 수 있다. 그런데 두 모델의 성능을 비교하기 위해 일일히 모델들에 대해서 실제 작업을 시키고 정확도를 비교하는 것은 품이 많이 든다. 비교해야 하는 모델이 두 개가 아니라 그 이상의 수라면 시간은 훨씬 크게 늘어난다. 이런 방법보다 조금 부정확할 수 있어도 테스트 데이터에 대해 빠르게 식으로 계산되는 보다 간단한 평가 방법이 있다. 바로 모델 내에서 자신의 성능을 수치화하여 결과로 내놓은 펄플렉서티이다. ♣ 언어 모델의 평가 방법(Evaluation metric): PPL 펄플렉서티는 언어 모델을 평가하는 평가 지표이다. P..
2024.04.06 -
Pytorch로 시작하는 딥러닝 입문(10-04. 한국어에서의 언어 모델)
영어나 기타 언어에 비해서 한국어는 언어 모델로 다음 단예를 예측하기가 훨씬 까다롭니다. 1. 한국어는 어순이 중요하지 않다. 한국어는 어순이 중요하지 않다. 이전 단어가 주어졌을 때 다음 단어가 나타날 확률을 구해야 하는데 어순이 중요하지 않다는 것은 다음 단어로 어떤 단어든 등장할 수 있다는 의미이다. 예를 들면 4개의 문장이 전부 의미가 통하는 것을 알 수 있다. '나는' 이라는 주어를 생략해도 말이 된다. 이렇게 단어 순서를 뒤죽박죽으로 바꿔놔도 한국어는 의미가 전달되기 때문에 확률에 기반한 언어 모델이 다음 단어를 제대로 예측하기가 어렵다. 2. 한국어는 교착어이다. 띄어쓰기 단위인 어절 단위로 토큰화를 할 경우, 문장에서 발생 가능한 단어의 수가 크게 늘어난다. 대표적인 예로 교착어인 한국어에..
2024.04.06 -
Pytorch로 시작하는 딥러닝 입문(10-03. N-gram 언어모델)
n-gram 언어 모델은 여전히 카운트에 기반한 통계적 접근을 사용하고 있으므로 SLM의 일종이다. 다만 앞서 배운 언어 모델과는 달리 이전에 등장한 모든 단어를 고려하는 것이 아니라 일부 단어만 고려하는 접근 방법을 사용한다. 이때 일부 단어를 몇 개 보느냐를 결정하는데, 이것이 n-gram에서의 n이 가지는 의미이다. ♣ 코퍼스에서 카운트하지 못하는 경우의 감소 SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다는 점이다. 확률을 계산하고 싶은 문장이 길어질수록 가지고 있는 코퍼스에서 그 문장이 존재하지 않을 가능성이 높다. 하지만 다음과 같이 참고하는 단어들을 줄이면 카운트할 가능성을 높일 수 있다. 가령 'An adorable little boy가 나왔을 때 is가 ..
2024.04.06 -
Pytorch로 시작하는 딥러닝 입문(10-02. 통계적 언어 모델: Statistical Language Model, SLM)
언어 모델의 전통적인 접근 방법인 통계적 언어 모델을 소개한다. ♣ 조건부 확률 조건부 확률은 두 확률 P(A), P(B)에 대해서 아래와 같은 관계를 갖는다. 더 많은 확률에 대해 일반화해보자. 4개 확률이 조건부 확률의 관계를 가질 때 아래와 같이 표현할 수 있다. 이를 조건부 확률의 연쇄 법칙(chain rule)이라고 한다. n개에 대해서 일반화해보자 ♣ 문장에 대한 확률 각 단어는 이전 단어의 영향을 받아서 나온다. 그리고 모든 단어로부터 하나의 문장이 완성된다. 따라서 문장의 확률을 구하고자 할 때 조건부 확률을 사용한다. 앞서 조건부 확률의 일반화 식을 문장의 확률 관점에서 적어보면 문장의 확률은 각 단어들이 이전 단어가 주어졌을 때 다음 단어로 등장할 확률의 곱으로 구성된다. 문장의 확률을..
2024.04.02 -
Pytorch로 시작하는 딥러닝 입문(10-01. 언어모델이란?)
♣ 언어모델(Language Model) 언어라는 현상을 모델링하고자 단어 시퀀스(문장)에 확률을 할당하는 모델을 의미한다. 언어 모델을 만드는 방법은 크게 1) 통계를 이용한 방법 과 2) 인공 신경망을 이용한 방법으로 구분할 수 있다. 최근에는 통계를 이용한 방법보다는 인공 신경망을 이용한 방법이 더 좋은 성능을 보여준다. 언어 모델은 가장 자연스러운 단어 시퀀스를 찾아내는 모델이다. 단어 시퀀스에 확률을 할당하기 위해서 가장 보편적으로 사용하는 방법은 언어 모델이 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 하는 것이다. 주어진 양쪽의 단어들로부터 가운데 비어있는 단어를 예측하는 언어 모델도 있다. 이는 문장의 가운데에 있는 단어를 비워놓고 양쪽의 문맥을 통해서 빈 칸의 단어를 맞추는 추론 문..
2024.04.02 -
투 포인터(백준 알고리즘 1644번)
♣ 투 포인터 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘. 시작점과 끝점 두 개의 점으로 접근할 데이터의 특정 범위를 표현할 수 있다. *대표적인 문제: 특정한 합을 가지는 부분 연속 수열 찾기 - n개의 자연수로 구성된 수열이 있다 - 합이 m인 부분 연속 수열의 개수를 구한다 - 수행 시간 제한은 O(N)이다. 위의 수열에서 합이 5인 부분 연속 수열을 구하려면 경우의 수가 3가지이다. (2, 3), (3, 2), (5) 수열의 모든 구성 요소에 대해 요소를 하나씩 더하는 완전탐색을 할 경우 걸리는 시간이 O2이 되어 시간 초과가 난다. 해결 방법은 아래와 같다. 1. 시작점(start)과 끝점(end)이 첫 번째 원소의 인덱스(0)을 가리키도록 한다. 2...
2024.03.31