1.연구자로서 컴퓨터로 언어를 처리 하는 데 과연 언어에 따른 난이도에 차이가 있을 것인가가 항상 궁금했다. 형태론 차원에서 보면 한국어는 어절이 수만 가지로 변하지만, 영어는 몇 가지로만 변한다. 따라서 한국어 형태소 분석기는 만들기 매우 ...
![[headerImage]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK9jJqPwxzyBW0Bjw8fLIt2aagxtw8vTZHMA0HRvtDpqLieWlHst2PYMGo4q6vvSEN6PwHLp4WYB2BfP211uJEK1s7-cA15_b4Nb2Z_5E1vlsbCs5W4wRkfRIvtKZGgJkBDphMcYx_jDELQG2S7i0RS3NZv3Q4cDIg__loPrrl75v-5uBzw6kmV4D9qZc/s1600/hnews_title_614_3.png)
1.연구자로서 컴퓨터로 언어를 처리
하는 데 과연 언어에 따른 난이도에 차이가 있을 것인가가 항상 궁금했다. 형태론 차원에서 보면 한국어는 어절이 수만 가지로 변하지만, 영어는 몇 가지로만 변한다. 따라서 한국어 형태소 분석기는 만들기 매우 어렵지만, 영어 형태소 분석기는 비교적 쉽다. 통사 분석기도 한국어는 어순이 비교적 자유로워, 어순이 상대적으로 고정된 영어보다 훨씬 만들기 어렵다. 따라서 규칙에 기반을 둔 전통적 언어처리 방법론에서는 한국어와 영어 사이에 뭔가 난도 차이가 있는 것처럼 보였다.
하는 데 과연 언어에 따른 난이도에 차이가 있을 것인가가 항상 궁금했다. 형태론 차원에서 보면 한국어는 어절이 수만 가지로 변하지만, 영어는 몇 가지로만 변한다. 따라서 한국어 형태소 분석기는 만들기 매우 어렵지만, 영어 형태소 분석기는 비교적 쉽다. 통사 분석기도 한국어는 어순이 비교적 자유로워, 어순이 상대적으로 고정된 영어보다 훨씬 만들기 어렵다. 따라서 규칙에 기반을 둔 전통적 언어처리 방법론에서는 한국어와 영어 사이에 뭔가 난도 차이가 있는 것처럼 보였다.
2000년대에 통계적 방법이 도입되었지만, 오히려
차이가 더 벌어졌다. 형태와 어순의 다양성으로 한
국어 처리에 더 큰 말뭉치가 필요했기 때문이다. 영어보다 한국어의 어절(띄어쓰기 단위) 수가 훨씬 많아
서, 수백 배의 말뭉치를 모으더라도 확률이 ‘0’이 되는 어절의 비중은 크게 줄지 않았다.
“모라벡 역설”은 인간이 배우지 않고 본능적으로
잘하는 일은 컴퓨터로 처리하기 어렵고, 거꾸로 고도의 지식 습득 과정을 거쳐야 하는 작업은 컴퓨터로 처리하기 쉽다는 것이다. 심층학습이 도입되면서
이 역설은 더는 받아들여지지 않을 것 같다. 이 글
에서 이런 기술적 혁신 속에서 과연 한국어 처리와
다른 언어의 처리 사이에 차별성이 있을까에 대한
소견을 적어본다.
2. 심층학습과 자연언어 처리
언어학의 오랜 전통처럼 통사 분석을 중심에 두고 문장을 분석하는 것이 전통적 언어처리 기법이다. 통계적 기법을 도입하면서 이 접근에 변화가 생 겼고, 심층학습의 도입에 따라 통사 중심의 접근에 근본적 변화가 일어났다.
언어학의 오랜 전통처럼 통사 분석을 중심에 두고 문장을 분석하는 것이 전통적 언어처리 기법이다. 통계적 기법을 도입하면서 이 접근에 변화가 생 겼고, 심층학습의 도입에 따라 통사 중심의 접근에 근본적 변화가 일어났다.
지금까지 언어처리의 기본 단위는 ‘형태소’였지만,
심층학습은 자소, 즉 알파벳을 기반으로 통계적으로 만든 ‘토큰(token)’을 기본 단위로 하며, 토큰 분리
는 ‘BPE(Byte Pair Encoding)’를 사용한다. 심층학습에서는 보통 5만 개 정도의 토큰을 사용하므로 형태소
단위로 처리하기에는 한계가 있다. 그렇다고 토큰의
수를 늘리면 계산량이 지나치게 증가하여 비용이 많이 든다. 비피이(BPE)는 학습 데이터 전체에서 확률
에 따라 가장 빈도가 높은 패턴을 찾아서 토큰을 구성하므로 유니코드를 쓰면 특정 언어나 문자 또는 띄어쓰기와 상관없는 언어처리 시스템을 만들 수 있다.
“밥을 먹고부터서였다”
▲ 예1) 다양한 생성 인공지능 시스템의 한국어 토큰화 예
에스케이티 시스템은 한국어를 기반으로 한 시스템이며, 지피티는 전 세계 모든 언어를 대상으로 한
시스템이다. 따라서 에스케이티의 시스템은 한국어
형태소와 비슷한 형태로 자르지만, 지피티는 전혀 다르게 자른다.
지피티는 유니코드를 기반으로 한다. 위에서 ‘[밥1]
[밥2]’로 표시한 것은 ‘밥’의 빈도가 낮아 토큰으로 인정되지 못하여, 두 토큰으로 잘렸음을 보여준다. 심
지어 ‘먹’은 빈도가 더 낮아 세 토큰(‘[먹1] [먹2] [먹3]’)
으로 나뉘었다. ‘습니다’는 빈도가 높아 토큰으로 인정했다, ‘아리스토텔레스’에서 ‘-토텔-’의 ‘종성-생략
+ㄹ’이 빈도가 높아 ‘토’의 끝부분과 ‘텔’의 첫 부분이
결합하여 ‘[토3텔1]’이라는 토큰으로 만들고 있다.
챗지피티에서 학습한 한국어의 양은 전체 학습량에 비해 많지 않으므로, 한국어가 차지하는 토큰 수
도 많지 않다. 그런데도 챗지피티의 한국어 구사력은 상당히 높으므로, 특정 언어의 토큰 수가 성능에
큰 영향을 주지 않음을 알 수 있다. 심층학습에서는
토큰 분리를 자소 또는 그 하위 단위로 하더라도 성능에 큰 영향을 주지 않는다.
▲ 단어를 의미 영역으로 사상한 예.
생성 인공지능 시스템에 자료를 입력하려면 먼저
문장 또는 문서를 토큰으로 분리한 후, 토큰을 기계가 이해할 수 있는 의미역으로 변환해야 한다. 이 과정을 ‘의미역 변환’이라고 한다.
심층학습에서 의미역
이란 ‘단어’를 실수 좌표의 한 점에 사상한 결과다.
토큰을 의미역에 사상하면 그림에서 보는 것처럼
‘국가’는 ‘국가’끼리 모이고, 수도는 수도끼리 모인다.
그리고 ‘이탈리아의 값’에서 ‘로마’를 빼고, 그 값에
‘중국’을 더하면 ‘베이징’이 나온다. ‘bank’의 의미역은
‘은행’과 ‘둑’ 사이에 자리한다. 의미역에서 보면 ‘한국’, ‘대한민국’, ‘Korea’와 ‘Corée’가 모인다.
문법적
요소도 의미 영역에 사상된다. 그림에서 진행형과 과
거가 따로 모여 있으며, 문법적 기능의 차이가 같은
방향과 거리로 나타나고 있다.
자료는 토큰으로 변환한 후 생성 인공지능 시스템에 입력한다. 생성 인공지능 시스템은 의미역에 사상
한 자료를 바탕으로 학습하며, 출력 토큰을 생성한
다. 따라서 기억된 정보는 그 정보가 기록된 언어와
무관하다. 특정 언어를 대상으로 할 때는 의미역을
500차원 내외로 하지만, 전 세계 언어를 대상으로
하는 심층학습 시스템은 4,000-5,000차원으로 의미역을 설정하기도 한다.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi56rrdsqkMUghSf0KMG8xDzNb5IIJQ-zws2DcSQiMzNP6MqN4NBTatenB08DTudbPjUB-uPBlyu0MVokp4BFoGYRgZ65sj0wwqpCr-wpw2M-RQZNXzhghz8mFXWzvk2Y8mjGFXj7OoEkV2Ux9M_7MQ8w4tFxtfzoScWigx0UEPebbpDvzmlSi9ts1RkQ/s200/%EC%86%8C%EC%8A%A4_%ED%95%9C%EA%B8%80%EC%83%88%EC%86%8C%EC%8B%9D%20%EC%A0%9C%EB%AA%A9_black.png)
![권혁철](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwh-eDgUuibhf2MQZmDoIXqr_uIZc3Jp61dvZmn40in-gszmfb7UjmBo1lYH2UfJyHfTcwYb-wzNMXXiR8uk-isZZ2KxbMnUNtg9QmLov4paA6hbE54YeY3JcS9wnsIZFWypnJVFxE_QTSsRd9T8e1C52sZTzVFHpZZY62riYAxSdAD-GOUMnyCIUHMdI/s1600/writer-hs614-%EA%B6%8C%ED%98%81%EC%B2%A0.jpg)
권혁철
부산대 정보컴퓨터공학부 교수
hckwon@pusan.ac.kr
댓글 없음