DOI QR코드

DOI QR Code

생성적 적대 신경망(GAN)을 이용한 한국어 문서에서의 문맥의존 철자오류 교정

Context-Sensitive Spelling Error Correction Techniques in Korean Documents using Generative Adversarial Network

  • Lee, Jung-Hun (Grand Information Technology Research Center) ;
  • Kwon, Hyuk-Chul (Dept. of Information Computer Science., College of Eng., Pusan National University)
  • Received : 2021.07.09
  • Accepted : 2021.10.13
  • Published : 2021.10.30

Abstract

This paper focuses use context-sensitive spelling error correction using generative adversarial network. Generative adversarial network[1] are attracting attention as they solve data generation problems that have been a challenge in the field of deep learning. In this paper, sentences are generated using word embedding information and reflected in word distribution representation. We experiment with DCGAN[2] used for the stability of learning in the existing image processing and D2GAN[3] with double discriminator. In this paper, we experimented with how the composition of generative adversarial networks and the change of learning corpus influence the context-sensitive spelling error correction In the experiment, we correction the generated word embedding information and compare the performance with the actual word embedding information.

Keywords

1. 서론

생성적 적대 신경망(generative adversarial network)의 대표적인 이점은 다음과 같다. 비지도 학습(unsupervised learning)으로 레이블을 지정하는 수작업 처리 과정이 없기 때문에 시간의 소요가 적다. 다른 이점으로는 데이터를 생성해낸다는 점이며, 실제 데이터와 유사한 데이터를 생성한다. 그리고 데이터의 밀도 분포를 학습하기 때문에 복잡한 데이터 분포를 학습할 수 있다. 이런 이점들은 다양한 기계학습(machine learning)의 문제에 응용할 수 있다.

생성적 적대 신경망은 다양한 분야에서 연구가 진행 중이며, 그중 이미지처리 분야에서는 사람의 얼굴을 모사하거나 사람이 그린 그림처럼 예술의 결과물을 만들어내기도 하는데 그 외에 텍스트, 오디오 및 비디오 관련에서도 응용과 연구가 활발히 진행되고 있다. 그중 텍스트 생성(text generation)의 경우 연구가 많지 않은데 이유는 생성적 적대 신경망은 연속적인 값을 생성하도록 설계된 것이어서 이산적인 값을 대상으로 훈련을 하기가 정말 어렵기 때문이다. 앞으로 텍스트 관련한 더 많은 연구가 이루어질 것으로 생각된다. 본 논문에서 사용하는 생성적 적대 신경망의 네트워크를 이용한 이유는 학습 데이터의 양을 늘리기(data augmentation) 위해서이다. 학습에서 데이터의 양을 늘리므로 성능 향상의 효과를 볼 수 있기 때문인데 기존의 단순 복제 방식이 아니 라인 간의 문장 작성 패턴을 학습한 생성적 적대 신경망을 통해 더 의미 있는 데이터를 생성하여 언어모형을 학습하고자 한다. 그리고 생성적 적대 신경망의 학습은 잘 안 되기 때문에 이미지 처리에서 안정적 모형으로 대표적인 DCGAN[2]과 이중 판별자를 두어 더 인간에 가까운 문장을 구성하기 위한 D 2G AN[3]을 기반으로 교정 실험을 진행한다. 본 논문에서는 문맥 의존 철자오류 교정에 적용을 위해서 사람이 작성한 문장을 학습시켜 문장을 모사하여 생성하고 생성 문장을 이용해 단어임베딩의 분산 정보에 영향을 줬을 때의 교정 성능에 대해서 논하고자 한다.

본 논문에서의 문맥의존 철자오류는 문장에서 나타나는 교정 대상 단어(target word)의 주변 문맥을 이용해 교정해야 하는 철자오류이다. 철자오류 말고도 한국어 문서에서 나타나는 오류는 다양하게 나눌 수가 있는데 그중 철자 오류율이 가장 높은 것으로 조사가 되었다.[4] 조사에서는 신문기사 4개월 치 분량과 소설 등을 수집하여 분석하였으며, 이들 자료는 교열 작업을 하기 전의 자료이다. 교열 작업 후에는 대부분 교열자의 맞춤법 지식 부족으로 인한 오류였지만 교열 이전의 오류는 47.5%가 철자 오류를 차지하고 있었다. 이처럼 일반인들에 의해 작성된 자료에는 다량의 철자 오류가 포함되어있으며, 그중 사전검색을 통해 검색이 가능한 단순 철자오류를 제외한 “결제”와 “결재” 같이 일반 사전에는 포함된 단어들의 경우 문맥에 따라서 철자 오류의 유무가 판단되므로 교정 난도는 상당히 올라가게 된다.

논문에서는 생성적 적대 신경망을 이용한 단어임 베딩 정보의 모사를 통해 문맥의존 철자오류 교정에 어떤 영향을 미치는지 알아보며, 생성적 적대 신경망을 이용한 실험의 방향성을 제시한다.

논문의 구성은 다음과 같다. 2장에서는 관련 연구에 관해서 이야기하고 3장에서는 논문에서 사용하는 문맥 의존 철자오류 기법을 이야기하며, 4장에서는 논문에서 사용하는 생성적 적대 신경망에 관해서 이야기한다. 5장에서는 실험과 결과를 분석하며, 마지막으로 6장에서는 결론 및 향후 연구에 관해서 말한다.

2. 관련 연구

논문에서 다루는 생성적 적대 신경망은 Ian Good-fellow[2]가 최초로 제시하였다. 생성적 적대 신경망은 학습이 매우 어렵다는 단점이 있다. 그 이유는 학습 과정에서 수렴(convergence)하기가 어렵고 객관적인 평가(evaluation)가 어렵다는 것이다. 그리고 최빈값 축소(mode collapse)가 되는 문제가 있는데 하나의 최빈값에 함몰되는 현상이다. 이를 해결하고자 여러 방식의 모형이 제안되었고 그중 하나가 논문에서 사용하는 DCGAN[1]이다. DCGAN은 비지도 학습을 하는 생성적 적대 신경망에 합성곱 신경망(CNN, convolution neural network)을 적용하며, 학습의 안정성을 높여주었다. 그 외에도 생성적 적대 신경망의 약점을 보완하며, 용도에 따라 발전한 대표적인 아키텍처(architecture) 들이 있다. 3차원 이미지를 생성하는 데 사용하는 3D-GAN[5], 저해상도 이미지를 고해상도 이미지로 생성하는 SRGAN(super-resolution GAN)[6], 얼굴 노화에 사용하는 cGAN/ Age-cGAN[7], 텍스트를 이용해 이미지를 합성해내는 StackGAN[8]이 대표적이다.

단어임베딩 정보를 이용한 생성적 적대 신경망에 관한 연구도 최근에 진행이 되었는데 다양한 생성적적대 신경망의 학습에 미리 학습된 단어임베딩 정보를 이용하여 단어임베딩의 분산 정보를 모사하는 논문[9]이 있었으며, GAN2vec[10]라는 컨셉으로 미리 학습된 단어임베딩 정보를 이용하여 문장을 생성하는 방식이 있었다. 본 논문의 기본 구성은 논문[9,10]를 참고로 하였으며, 미리 학습된 단어임베딩 정보를 이용한다는 점이 이에 해당한다. 다른 점은 학습 과정에서 문장을 생성하여 단어임베딩의 분산 정보에 업데이트한다는 점이다. 논문에서 다루는 이중 판별자는 이미지 처리에서 사용된 D2GAN[3]을 참고로 구성하였으며, 판별자를 이중으로 하여 학습을 하는 것 외에는 기본 구성과 같다.

3. 문맥의존 철자오류 교정

문맥의존 철자오류 교정 방법은 Fig. 1을 참고로 한다. 먼저 실험에 사용할 오류 문서를 생성하며, 이때 사용되는 문서는 오류율이 낮은 잘 정제된 문서여야 한다. 오류어는 단순 철자오류가 아닌 문맥을 통해 구분이 가는 오류어를 위주로 생성하며, 정답 단어와의 편집거리(edit distance)가 1인 단어를 생성한다. 변경되는 음소는 키보드 상에서 가까운 음소를 선택하게 된다. 예로 “사위”라는 단어의 오류 후보를 생각해본다면 “시위”, “하위”, “가위” 등과 같은 오류 후보어가 있을 것이다. 이 중 임의로 선택하여 오류어를 문장에 삽입하게 된다. 참고로 오류어의 생성은 문맥을 기반으로 생성[11]을 한다면 더욱 신뢰도 있는 실험을 진행할 수 있을 것이다. 영어의 경우 1조 어절에서 오류어를 생성[11]해 내므로 가능했으나 상대적으로 규모가 적은 한국어 말뭉치를 이용해 생성하는 시도는 있었으나 영어에서와같이 다량의 후보군을 얻기가 힘들었다. 그렇기 때문에 키보드 근접 거리와 단어 간 편집거리를 이용한 오류어 생성방식을 택하였다. 다음 단계로 생성된 오류 문서를 교정하게 되는데 2가지 중요한 점이 있다. 첫째로 문장에서의 오류어 검색과 둘째로 해당 검색된 오류어를 포함한 문장의 교정이다. 수식 (1), (2)를 통해 문맥 의존 철자오류 교정을 설명한다. wi는 교정 대상 단어이며, sentence는 교정 대상 단어의 주변 문맥을 참조하기 위한 입력값이다. dis함수는 교정 대상 단어와 윈도우사이즈만큼의 문맥이 이루는 내적(inner product) 값의 합을 구하는 함수이다. 내적값의 합의계산은 수식 (2)와 같으며, 교정 대상 단어 또는 교정 후보어가 주변 문맥과의 거리가 가까울수록 문장은 높은 값(코사인 거리 평균값)을 갖게 된다. wi는 교정대상 단어의 교정 후보어를 나타내며, c는 교정 후보의 최대 수가 된다. 즉, 수식 (1)은 교정 후보어의 우도(Likelihood)를 구한 식이다.

MTMDCW_2021_v24n10_1391_f0001.png 이미지

Fig. 1. Correction process.

argmax dis(wi, sentence), (0≤i≤c)       (1)

수식 (2)에서의 문맥의 내적값의 합을 구하며, wt는 교정후보단어이고 win은 교정후보단어의 주변 문맥의 참조 길이이다. t를 교정후보단어의 위치를 0으로 보고 win값을 ±하여 주변 문맥 단어의 위치를 나타낸다. cos(wt,wj)는 각 단어의 위치를 기반으로 교정후보단어와 문맥단어간의 내적을 구하는 함수이다. 이 부분이 각 단어임베딩 모형에서의 단어 간의 거리값을 적용하는 부분이다. 마지막으로 λ는 미등록어를 처리하기 위한 평탄화값이다. 참고로 논문에서 사용하는 단어임베딩 기법인 facebook의 Fast Text[12]는 미등록어의 처리를 해주므로 λ를 따로 사용하지 않는다.

\(\operatorname{dis}\left(w_{i}, \text { sentence }\right)=\sum_{j=t-w i n}^{t+w i n} \cos \left(w_{t}, w_{j}\right)+\lambda,\left(t=0, w_{i}=w_{t}\right)\)       (2)

교정교정에서 수식 (1), (2)의 wt는 문장에서의 대상 어절과 교정 후보어이며, 무조건 교정 대상 어절과 교정 후보어(오류어와 동일한 방식으로 계산하여 생성)를 비교하여 교정하지 않고 오류어 검색을 통해 교정 유무를 결정짓는다. 오류어의 검색은 교정대상 단어 또는 교정 후보어 단어와 문맥 단어와의 값을 계산하고 교정 대상 단어에 일정 수치만큼의 임계치를 높이고 교정 후보어들의 계산값 중에 임계치를 넘는다면 오류어로 검색이 되었다고 판단하며, 수식 (2)와 같이 비교를 통해 최종적으로 교정어를 결정짓는다.

3.1 실험에서의 문맥의존 철자오류 교정의 세부 절차

본 논문에서는 문맥의존 철자오류 교정을 중심으로 크게 두 가지 실험으로 나뉜다. 혼동되는 어휘 쌍을 대상으로 문맥을 주는 방식과 다양한 단어를 대상으로 교정을 하는 방식이다. 어휘 쌍의 경우 “사장”, “사정”과 같이 대치되는 가까운 단어를 선정하고 어의 중의성 해소(WSD, word sense disambiguation) 의 관점에서 교정 성능을 실험한다. 이런 방식은 교정 어휘 쌍을 엄선하여 교정 성능의 일부를 측정하므로 전체 성능을 대표하지는 못하지만 아이디어의 가능성 증명이나 빠른 실험의 이점을 준다. Fig. 2를 참고로 어휘 쌍 중 하나가 포함된 실험 정답 문장이 입력되고 혼동되는 각 쌍의 단어를 주변 문맥과의 거리를 수식 (1), (2)를 이용해서 구하여 최종 교정 어를 선택한다. 계산 과정에서는 생성적 적대 신경망 학습을 통해 얻은 언어모형을 이용하며, 각 단어의 벡터를 얻고 벡터 간의 코사인 유사도(cosine similarity)를 구한다. 다음으로 다양한 단어를 대상으로 교정을 하는 방식이며, 문맥의존 철자오류가 섞인 실험 문장을 입력하고 각 문맥의 단어를 순회하면서 편집거리가 가까운 단어를 생성한다. 편집거리가 가까운 단어는 단어 사전을 통해 단순 철자오류의 경우 걸러지며, 만약 최종 단어들이 있다면 교정 후보 어로교정 계산을 하게 된다. 교정 후보어의 구성 예로 “사장”이라는 단어의 가까운 편집거리 단어 집합 {가장, 하장, 싸장, 샤장, 사증, ...}을 얻어 단순 철자오류를 제거하면 {가장, 하장, 사정, 사당, ...}과 같이 문맥 의존 철자오류 교정 관련 후보어 집합을 얻게 된다. 어휘 쌍 실험에서와 마찬가지로 교정 후보어 집합의 단어들과 주변 문맥의 단어 간의 거리를 구하여 최고 가까운 단어가 최종 교정 단어가 된다.

MTMDCW_2021_v24n10_1391_f0002.png 이미지

Fig. 2. Detailed correction procedure in the experiment.

4. 이중 판별자 생성적 적대 신경망

생성적 적대 신경망은 게임 이론(game theory) 중의 하나인 폰 노이만(John Von Neumann)의 최소 최대 정리(minimax theorem)의 형태로 접근하여 데이터 생성 문제를 해결하는 방식이다. 데이터의 생성모형과 판별 모형으로 구성된 심층 신경망으로 서로 의존적으로 세대를 반복하면서 생성과 반복을 하면서 서로 대항하며 학습을 한다. 이런 학습이 반복되면서 결국 판별기가 진짜와 가짜의 데이터를 구분하지 못하는 순간이 오면 게임이론에서 말하는 내시균형(nash equilibrium)에 도달했다고 표현한다.

\(\begin{array}{cc} \min \max \\ G \quad D \end{array}_{\begin{aligned} V(D, G)=& E_{x \sim P d a t a(x)}[\log D(x)] \\ &+E_{z \sim P z(z)}[\log (1-D(G(z))] \end{aligned}}\)       (3)

기본적인 생성적 적대 신경망은 수식 (3)과 같으며, D(x)는 판별자 모형이고 G(z)는 생성자 모형을 나타낸다. Px는 실제 데이터 분포이며, Pz는 생성자에서 생성한 데이터의 분포이다. E는 예상되는 출력이다. 훈련 과정에서 판별자는 진짜를 진짜로 가짜를 가짜로 판별해야 하므로 식의 총 출력을 최대화하려 하지만 생성자는 실제 데이터와 최대한 가까운 가짜데이터를 만들어내어 식의 출력을 최소화하려 할 것이므로 생성적 적대 신경망은 훈련을 거듭하면서 생성자와 판별자의 신경망이 균형을 이루게 된다. 이를 모형이 수렴하였다고 말하거나 내시 균형에 도달하였다고 표현한다.

생성적 적대 신경망에서도 한계를 나타내는 여러 가지 문제점이 있는데 그 중 대표적으로 최빈값 붕괴(mode collapse)가 있다. 간단하게 생성자의 신경망이 표본을 다양하게 생성하지 못하는 문제로 똑같은 결과만을 생성하는 것이다. 예로 선행 실험[13]에서의 DCGAN 모형[2]에 대용량의 말뭉치를 학습하였을 때 문장의 종단을 채우기 위해 넣은 “”로만 구성된 문장을 생성자가 반복해서 내놓았다. 게다가 300세대(epoch)가 학습되기도 전에 최빈값이 붕괴되어 버리니 실험을 진행하기가 어려웠다. 논문에서는 최빈값 붕괴를 극복해 보고자 생성적 적대 신경망의 아키텍처를 변경하여 판별자를 이중으로 한 생성적적대 신경망인 D2GAN[3]의 아이디어를 사용하기로 하였다. Fig. 3을 참고로 선행 실험[13]에서의 상단모형을 하단 모형과 같이 판별자를 이중으로 두었다. 두 판별자는 다른 역할을 수행하게 된다. 수식 (4) 를보면 기존 이인 게임(two player game)이 아닌 삼인 게임(three player game)의 형태인 것을 확인 할 수 있다. D1(x)의 x가 데이터 분포 Px에서 추출되면 높은 점수를 PZ에서 생성되면 낮은 점수를 주게 된다. 그리고 D2(x)의 x가 PZ에서 생성되었으며 높은 점수를 데이터 분포 Px에서 추출되었으면 낮은 점수를 주며, D1과는 반대로 동작하게 된다. 기존 생성적 적대 신경망과 다르게 판별자는 양의 실수 전체를 출력으로 하며, 생성자의 경우 두 판별자를 모두 속이는 데이터를 합성하게 된다. 각 판별자의 매개변수는 공유하지 않으며, 삼인 게임 방식의 최대최소 최적화를 수행한다. 수식 (4)의 α,β는 0~1 사이의 값의 하이퍼 파라미터로 두었는데 이는 판별기의 출력이 양의 실수 전체로 제한이 없음으로 이를 통해 학습을 안정화하기 위해서이다.

MTMDCW_2021_v24n10_1391_f0003.png 이미지

Fig. 3. Structure of general GAN and dual discriminator GAN.

\(\begin{array}{r} \min \max \\ G D_{1} D_{2} \end{array} V(G, D_1, D_2) = \alpha \times E_{x \sim Pdata(x)} [logD_1(x)] \\ \qquad \qquad \qquad \qquad \qquad + E_{z \sim Pz(z)}[-D_1(G(z))] \\ \qquad \qquad \qquad \qquad \qquad + E_{x \sim Pdata(x)}[-D_2(x)] \\ \qquad \qquad \qquad \qquad \qquad + \beta \times E_{z \sim Pz(z)}[logD_2(G(z))]\)       (4)

Fig. 4를 통해 Fig. 3을 알고리즘으로 표현하였다. 미리 학습된 단어임베딩 모형의 벡터를 이용하여 학습 문서를 표현하고 각 판별자를 학습시킨다. 이후 세대 만큼의 학습을 반복하게 되는데 먼저 실제 데이터를 각 판별자에게 보내고 생성자가 생성한 가짜데이터도 각 판별자에게 보낸다. 판별자는 독립적으로 각각 업데이트하며, 생성자 또한 업데이트하게 된다. 한 학습의 끝에서는 생성자가 문장을 만들어내며, 이 문장 정보를 학습에 사용되는 단어임 베딩과 다른 단어임베딩의 분산 정보에 업데이트한다. 이와 같은 방식으로 세대를 반복하며, 단어임베딩의 분산정보에 영향을 주게 된다.

MTMDCW_2021_v24n10_1391_f0004.png 이미지

Fig. 4. Learning algorithm.

5. 실험 및 평가

실험의 생성적 적대 신경망의 모형 구성은 Fig. 5와 같다. 실험에서의 일반적인 생성적 적대 신경망은 DCGAN [2]에 가깝게 구현되었다. Fig. 5에서 왼쪽은 생성자이며, 오른쪽은 판별자이다. 이중 판별자의 경우 생성자에서 생성한 문장의 판별 기준만 다르며, 두 판별자의 구성은 Fig. 5의 판별자와 같다. 입력데이터는 Fig. 6과 같이 단일 단어가 p의 크기의 벡터를 가지며, 학습에서는 p를 64로 설정하였다. n은 학습말뭉치 전체의 길이를 말하며, 배치(batch)의 길이는 128을 사용한다. 학습에서는 형태소가 분리된 상태의 말뭉치를 이용한다. 논문에서는 생성자를 통해 문장을 생성하며, 단어임베딩의 분산 정보를 업데이트하게 된다. 이런 단어임베딩 정보를 이용해 문맥 의존 철자오류 교정 실험에 적용하여 성능을 측정한다.

MTMDCW_2021_v24n10_1391_f0005.png 이미지

Fig. 5. Generative adversarial network model.

MTMDCW_2021_v24n10_1391_f0006.png 이미지

Fig. 6. Input data configuration.

선행 실험[13]에서는 5개의 어휘 쌍을 이용해 문맥 의존 철자오류 교정 실험을 하였으며, Table 1과 같이 F1이 평균적으로 향상되었음을 확인하였다. Table 1의 교정 어휘 쌍을 이용하는 방식[14]은 어의 중의성 해소와 같은 관점으로 접근하여 교정하는 방식이다. Table 2와 같이 5개 쌍, 10개 단어를 선정했으며, 단어의 선택에 있어서 기준은 세종 말뭉치에서 출현 빈도가 높은 어휘(명사), 서로 오타가 발생할 수 있는 편집거리가 1인 어휘, 주변 문맥의 중복률이 낮은 어휘를 대상으로 하였다. 명사를 대상으로 한 이유는 용언보다 명사가 통계적인 실험에서 결과가 좋지 않게 나오기 때문이며, 편집거리를 1로 한 이유는 기초연구로 시작하였기 때문이다. 편집거리가 커질수록 교정 난도는 더욱 올라가게 된다. Table 2의 중복률과 빈도는 세종 말뭉치에서 얻은 정보이다. 어휘 쌍 간에 비슷한 빈도로 나타나며, 주변 문맥과 공기하는 중복률이 비슷한 단어를 택하여 교정하였다.

Table 1. A prior experiment correction performance.

MTMDCW_2021_v24n10_1391_t0001.png 이미지

Table 2. Correction word pair.

MTMDCW_2021_v24n10_1391_t0002.png 이미지

선행 실험[13]에서 생성된 단어임베딩의 분산 정보를 이용해 어느 정도 교정 기능이 향상될 수 있음을 보였다. 기본 실험에서는 대용량의 말뭉치를 학습하였을 때 300세대가 되기도 전에 문장의 종단 길이를 맞추기 위해 채운 “”만으로 구성된 문장을 생성하였으며, 이는 생성적 적대 신경망이 최빈값에 치우쳤다고 판단되었다. 그러므로 대용량의 말뭉치를 학습해서 실험한 교정 결과를 얻기는 어려웠다. 생성적 적대 신경망의 연구 발전은 이런 단점을 극복하기 위해서 주로 진행됐으며, 논문에서는 그중 이중판별자[3]를 두는 방식으로 구성된 생성적 적대 신경망의 아키텍처를 통해 극복해보고자 했다.

Table 1의 실험에서는 생성 문장의 길이를 7로 잡고 실험한 내용이며, Table 3과 Fig. 7은 이중 판별 자생성적 적대 신경망과 단일 판별자 생성적 적대 신경망에서 학습된 임베딩 데이터를 이용하여 생성 문장의 길이를 확장해가며 문맥의존 철자오류를 교정한 실험 결과이다. 단일 판별자 기반 생성적 적대 신경망에서 문장 생성 길이를 7로 제한 한 Table 1의 결과는 Table 3과 Fig. 7의 문장 길이 5의 결과에 비해서 높고 문장 길이 10의 성능보다는 낮은 것을 알 수 있다. Fig. 7에서 보여주듯이 문장 길이를 늘리면서 문장 생성을 하였을 때 성능의 향상을 보여주었으며, 생성 문장 길이가 10이었을 때 이외에는 이중 판변자에서 높은 성능을 대체로 보여주는 것을 볼 수 있다. Table 3을 참고로 교정 어휘 쌍의 문맥의존 철자오류교정 성능에서 한쪽 단어의 교정 성능이 올라가면 다른 쪽은 반대로 내려가는 현상을 볼 수 있었고 전체적으로 성능이 올라갔을 경우 성능 향상에 도움이 되었다고 판단을 하였다.

Table 3. Comparison of detailed performance of corrective vocabulary pairs according to sentence generation length change.

MTMDCW_2021_v24n10_1391_t0003.png 이미지

MTMDCW_2021_v24n10_1391_f0007.png 이미지

Fig. 7. Generation sentence length adjustment experiment.

Fig. 8에서는 생성적 적대 신경망의 생성자와 판별자의 손실률(loss)과 생성 문장의 첫 단어와의 거리를 그래프로 나타낸 것이며, 각 어휘 쌍에 따른 각각의 학습 내용을 담고 있다. 그림에서 보여주는 수치값은 이중 판별자 생성적 적대 신경망에서 생성문장 길이를 15로 제한한 것이다. 판별자의 그래프는 두 개의 판별자의 손실률을 합산하여 측정한 것이며, 전체 손실률의 그래프는 학습이 잘 수렴했다는 것을 보여준다. 생성 기반의 언어모형이 잘 학습되었는지는 생성 문장의 의미 분석이나 연구자의 목표 연구에서 성능으로 증명하게 최선의 방법이다. 그렇기 때문에 본 논문에서는 생성 문장 단어의 구성이 연관성 있게 잘 구성이 되었는지와 문맥의존 철자오류 교정성능을 통해 향상을 주었는지를 본다. 생성적 적대 신경망이 단어임베딩의 분산 정보를 잘 모사하기 위해서는 최빈값에 치우치지 않으며, 반복적이지 않고 다양한 문장을 만들어야 한다. 실험에서는 형태소 분석 말뭉치를 학습하며, 중요 품사(명사, 형용사, 부사, 동사)인 4 품사를 중심으로 진행하였고 생성된 문장의 단어 간의 관련성을 보기 위해 Fig. 8과 같이 생성중심 단어를 기준으로 코사인 유사도를 계산하였다. 세대가 높아짐에 따라서 생성 문장 구성 단어 간의 거리가 가까워짐을 확인할 수 있다. 그림에서 각 그래프의 번호는 중심 단어와 비교 단어와의 거리를 뜻하며, 최빈값에 치우치는 경우에도 그림과 같은 양상이 보이므로 무조건 신뢰하기란 어렵다. 예를 들어같은 단어로만 생성된다면 유사도는 1에 수렴할 것이기 때문이다. 생성자는 문장을 생성하면서 시작 문장과 가까운 단어를 찾아 구성을 하는데 각 어휘 쌍의 유사도와 Table 3에서의 문장 길이 15에서의 이중판별자를 사용한 생성적 적대 신경망의 문맥의존 철자오류 교정 성능을 비교하면 문장 단어의 거리가 1에 수렴 한다고 하더라도 교정 성능 또한 높아진다고 볼 수는 없는 것을 알 수 있다.

MTMDCW_2021_v24n10_1391_f0008.png 이미지

Fig. 8. Learning loss rate graph and generated sentence meaning distance measurement graph.

다음으로 실험을 확장하여 대량의 말뭉치를 통해 광범위한 교정 문서에 대한 교정 실험을 진행하였으며, 학습 말뭉치의 규모는 Table 4와 같다. 표에서의 대용량 말뭉치를 이용한 단어임베딩의 학습은 Table 3의 신문 기사를 사용하였으며, 생성적 적대 신경망 학습 세대는 총 2000세대를 학습하였다. 생성적 적대 신경망이 학습을 반복하면서 최빈값에 치우치는 문제를 해결하려고 고안한 모형이더라도 학습의 세대의 최대가 늘어날수록 최빈값에 치우치는 문제가 생기는 것은 피할 수가 없었으며, 그러므로 적정선인 2000세대를 최대로 해서 학습을 진행하였다.

Table 4. Learning corpus information.

MTMDCW_2021_v24n10_1391_t0004.png 이미지

결과 분석에 앞서 Table 4의 경우 1000만 건의 신문 기사에서 각 혼동 어휘 쌍(confusion word pair)이 포함된 모든 문장을 수집하여 학습한 결과이다. 그러므로 각 어휘 쌍을 기준으로 구축되어 그 외 단어의 분산 정보가 정확히 반영되지 않았을 것이다. 통계적 방식에서는 중심 단어와 공기하는 단어들의 정보만을 봐도 크게 문제가 되지 않았지만 단어임 베딩 정보를 기반으로 하는 문맥의존 철자오류 교정에서 보여주는 실험의 결과를 통해 주변 단어와 공기되는 다른 단어의 정보 또한 중요한 것을 알 수 있다. 그렇기 때문에 Table 4의 실험에 비해서 광범위한 범위의 단어를 다루는 Table 5의 문맥의존 철자오류교정 성능은 분산 정보가 학습과정에서 고루 반영되지 못하여 어휘 쌍 실험에 비해서 성능이 낮아진 것을 알 수 있다. Fig. 9과 같이 대용량 말뭉치 기반에서 학습을 하면서 문장 성분 유사도를 측정하였을 시에 Fig. 8의 소규모 실험에서와 다르게 유사도 수렴이 1750세대까지 낮게 유지되다가 올라가는 것을 볼 수 있다.

Table 5. Correction performance of dual discriminator GAN in large corpus.

MTMDCW_2021_v24n10_1391_t0005.png 이미지

MTMDCW_2021_v24n10_1391_f0009.png 이미지

Fig. 9. Distance between sentence words generated per generation.

Table 5는 어휘 쌍이 아닌 무작위의 오류를 포함한 문장을 이용한 교정 실험으로 Table 3의 실험과 비교했을 때 교정 난도가 오른 실험이며, 이 실험에서 알고자 하는 것은 다양한 문장의 단어를 대상으로 생성된 단어임베딩 정보를 이용하였을 때 교정이 잘되는지를 살펴보기 위해서이다. Table 5를 참고로 이중 판별자 생성적 적대 신경망과 단일 판별자 생성적 적대 신경망의 F1 성능을 비교하였을 때 이중 판별자 생성적 적대 신경망의 최고 성능이 생성 문장 길이 10과 15에서 미세하게 높게 나타난 것을 알 수 있으며, 전체 성능을 보았을 때 눈에 띄게 성능의 차이를 보이지 못했고 실제 수치상으로도 전체 오류어를 20개미만으로 더 잘 교정한 정도였다. 이는 풍부하게 생성 문장 정보가 분산에 반영되지 못했기 때문이라고 판단한다. 풍부하게 반영이 어려웠던 이유는 실험에서 생성적 적대 신경망의 구조를 이중 판별자의 구조로 변경하여 단일 판별자에 비해 최빈값에 치우치는 문제를 완화하였지만 학습 세대가 늘려갈수록 최빈값에 다시 치우치는 것을 확인하였다. 그렇기 때문에 학습의 횟수에는 한계가 명백했고 이런 점들이 많은 종류의 단어의 의미적 정보를 만들어내지 못한 것으로 생각된다.

6. 결론 및 향후 연구

본 논문의 실험에서는 단어임베딩 정보를 모사하여 교정하였을 시에 모사 정보를 통해 교정에 어떤 영향을 미칠지를 실험을 하였다. 실험에서 단일 판별자를 갖는 기본적인 생성적 적대 신경망의 구조에서는 대용량의 말뭉치로 학습하기에 최빈값에 빠르게 치우쳐 문장의 생성이 어려웠지만 판별자를 이중으로 두어 신경망의 구조를 변형하므로 더욱 많은 세대를 통한 학습을 진행할 수 있었다. 하지만 이 또한 학습 세대가 커지면서 최빈값에 치우쳤으며, 치우치기 전의 결과로 교정을 하였을 시에 성능이 조금 높아졌음을 확인하였다. 그렇지만 어휘 쌍의 단어임 베딩 모사 정보를 이용한 교정에서는 어느 정도의 향상을 보였으므로 대용량의 학습에서 풍부한 분산정보만 만들어낼 수 있다면 성능 향상의 가능성이 있다고 판단된다. 그렇기 때문에 향후에는 최빈값이 치우치는 문제를 해결하여 다세대의 학습을 통해 다양한 문장을 생성하는 생성적 적대 신경망 모형을 고안해낼 필요가 있다고 본다.

※ This work was supported by a 2-Year Research Grant of Pusan National University

References

  1. I. Goodfellow, et al., "Generative Adversarial Nets," Advances in Neural Information Processing Systems, Vol. 2, pp. 2672-2680, 2014.
  2. R. Radford, L. Metz, and S. Chintala. "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks," arXiv preprint, arXiv:1511.06434, 2015.
  3. T. Nguyen, et al., "Dual Discriminator Generative Adversarial Nets," Advances in Neural Information Processing Systems. 2017.
  4. D.-J. Kim, "A Method for Detection and Correction of Pseudo-Semantic Errors Due to Typographical Errors," Journal of the Korea Society of Computer and Information, Vol. 18, No. 10, pp. 173-182, 2013. https://doi.org/10.9708/JKSCI.2013.18.10.173
  5. J. Wu, et al., "Learning a Probabilistic Latent Space of Object Shapes via 3D Genera-Tive-Adversarial Modeling," Advances in Neural Information Processing Systems, pp. 82-90, 2016.
  6. C. Ledig, et al., "Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network," Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 4681-4690, 2017.
  7. G. Antipov, M. Baccouche, and J.-L. Dugelay. "Face Aging with Conditional Generative Adversarial Networks," 2017 IEEE International Conference on Image Processing (ICIP). pp. 2089-2093, 2017.
  8. H. Zhang, et al. "Stackgan: Text to Photo-Realistic Image Synthesis with Stacked Generative Adversarial Networks." Proceed- ings of the IEEE International Conference on Computer Vision, pp. 5907-5915, 2017.
  9. S. Robert, Generative Adversarial Networks and Word Embeddings for Natural Language Generation, Master's Thesis of City University of New York, 2019.
  10. A. Budhkar, et al. "Generative Adversarial Networks for Text using Word2vec Intermediaries," arXiv preprint, arXiv:1904. 02293, 2019.
  11. J.-H. Lee, M. Kim, and H.-C. Kwon. "Improved Statistical Language Model for Context-Sensitive Spelling Error Candidates," Journal of Korea Multimedia Society, Vol. 20, No. 2, pp. 371-381, 2017. https://doi.org/10.9717/KMMS.2017.20.2.371
  12. P. Bojanowski, et al. "Enriching Word Vectors with Subword Information," Transactions of the Association for Computational Linguistics, Vol. 5, pp. 135-146, 2017. https://doi.org/10.1162/tacl_a_00051
  13. J.-H. Lee, M. Kim, and H.-C. Kwon. "Context-Sensitive Spelling Error Correction Techniques using Generative Adversarial Network," Proceedings of the KIISE Korea Software Congress, pp. 395-397, 2019.
  14. J.-H. Lee, M. Kim, and H.-C. Kwon. "The Utilization of Local Document Information to Improve Statistical Context-Sensitive Spelling Error Correction," KIISE Transaction on Computing, Vol. 23, No. 7, pp. 446-451, 2017. https://doi.org/10.5626/KTCP.2017.23.7.446