인공신경망(ANN)과 Word2Vec
인공신경망
인공신경망(Artificial Neural Network)은 인간의 뇌 구조를 본딴 기계 학습 알고리즘이다. 인공신경망이라는 이름에서 알 수 있듯이 이 알고리즘은 인간의 신경 세포(neuron) 구조에 많은 영향을 받았다. 우리 몸의 각 신경 세포는 시냅스(synapse)를 통해 결합되어 있고, 자극이 들어왔을 때 가지 돌기와 축삭 돌기를 거쳐 시냅스를 통해 서로 전기적인 신호를 사용하여 통신한다. 그런데 들어오는 자극이 일정하더라도 각 신경 세포마다 자극에 반응하는 정도가 조금씩 달라, 자극을 강화시켜 전달하기도 하고 축소시켜 전달하기도 한다.
[신경 세포와 퍼셉트론, 이미지 출처 : https://appliedgo.net/media/perceptron/neuron.png]
이러한 신경 세포의 특징을 반영한 모델이 인공신경망의 기초가 되는 퍼셉트론(perceptron)이다. 퍼셉트론은 기본적으로 입력을 받고 출력을 내보내는 함수와 같은 형태를 띠고 있다. 특징적인 것은 각 입력값을 받아들일 때 입력값을 바로 출력하지 않고 일정한 가중치(weight)를 곱해 준다는 것이다. 이 과정을 앞먹임(feed-forward)이라고 한다. 이렇게 가중치를 곱한 입력값의 결과가 출력이 되는데, 이를 실제 목표 출력치와 비교하여 다음 입력 때에는 출력치가 목표치에 근접할 수 있도록 가중치를 조절하는 과정을 거친다. 이 과정을 역전파(back-propagate)라고 한다. 이 앞먹임과 역전파 과정을 많은 데이터를 입력하면서 번갈아가며 진행하다 보면 가중치가 데이터에 일반적(general)으로 적용되게 되는데, 이를 인공신경망에서의 학습(learning)이라고 한다. 결국 인공신경망에서 ‘데이터를 학습한다’라는 것은 ‘주어진 데이터에 맞게끔 가중치를 조정한다’와 동치가 되며, 퍼셉트론이 깊게(deep) 쌓아 올려진 형태의 모델이 결국 딥 러닝이다.
Word2Vec
Word2Vec은 2층 인공신경망을 토대로 한 Word Embedding 알고리즘이다. 2013년에 (당시) 구글 소속 엔지니어인 Tomas Mikolov의 ‘Distributed Representations of Words and Phrases andtheir Compositionality’ 에 의해 제창되었으며, 높은 정확도와 짧은 훈련 시간이라는 강점을 가지고 있어 현재 머신 러닝의 자연어 처리 분야에서 독보적인 점유율을 기록하고 있다.
Word2Vec은 단어 사이의 분포 관계를 토대로 하여 단어를 일정한 의미를 갖는 벡터로 변환하는 기술이다. Java로 쓰여진 딥러닝 라이브러리인 DL4J에서 Word2Vec을 다음과 같이 설명하고 있다.
Word2vec을 이용하면 단어간 유사성을 구할 수 있습니다. 원래 word embeddings의 목적이 유사한 단어일 수록 가까운 거리에 위치하도록 각 단어에 해당하는 벡터 값을 찾는 것 입니다. 이 학습은 사람이 관여하지 않으며 말뭉치 데이터만을 사용합니다.
CBOW와 Skip-gram의 간소화 모델, 이미지 출처 : http://4.bp.blogspot.com/-qV1SVTB1zjQ/VcxHhKjxx6I/AAAAAAAAACU/UvsM0r7s9_8/s1600/1.png
Word2Vec은 단어들 사이의 관계성을 파악하는 방법으로 두 가지 모델을 가지고 있다. 번는 CBOW(Continuous Bag of Word)로, 주변에 여러 가지 단어들이 주어졌을 때 등장할 확률이 가장 높은 단어를 선택하는 모델이다. 신경망의 입력으로 주변의 여러 단어들의 벡터값이 주어지고, 신경망 내부 층을 거치며 모든 단어들의 출현 확률을 계산하는데 가장 높은 확률의 단어가 결과값으로 출력된다. 출력된 단어가 실제 단어와 다를 경우 역전파(backpropagation)를 통해 가중치가 조정되며, 학습이 끝난 이후 신경망의 가중치 테이블이 각 단어의 벡터가 된다. 두 번째 모델은 Skip-gram으로, CBOW와 반대로 특정 단어가 주어졌을 때 주변에 올 수 있는 가능성이 가장 높은 단어들을 선택하는 모델이다. 이를 제외한 동작 원리는 CBOW와 거의 유사하며, 데이터셋이 많을수록 CBOW보다 Skip-gram이 더 높은 성능을 보인다고 한다.
여타 인공신경망 알고리즘과 마찬가지로 Word2Vec도 초변수(HyperParameter)의 조정이 필수적이다. Word2Vec에서 일반적으로 고려해야 할 초변수 또는 추가 알고리즘 요소는 다음과 같다.
- Epoch, Iteration
- Learning Rate
- Layer Size (단어 벡터의 길이)
- Batch Size
- Window Size
- Negative Sampling or Hierarchic Softmax
- SubSampling
- Adagrad
- …etc
초변수 조정은 일반적으로 실험적, 경험적인 방법에 의해서만 가능하다고 알려져 있다. 무엇보다 데이터셋의 종류와 특징, 데이터의 수량에 따라 적합한 초변수 값이 크게 달라질 수 있다. 초변수를 조정하는 작업은 적절하게 훈련된 신경망 모델을 만드는 데 필수적이면서도, 그만큼 시간과 노력이 많이 소요되곤 한다.
㈜아르고넷과 딥러닝 서비스
[S2Journal의 저널 선택 서비스 예시] 현재 당사의 제품인 S2Journal에서는 Word2Vec 기반 저널 선택 서비스(베타)를 제공하고 있다. 사용자가 작성한 논문의 요약을 저널 선택 서비에 입력하면 해당 논문을 ParagraphVector(Word2Vec의 확장)화 시켜, 논문과 가장 유사도가 높은 저널을 자동으로 추천해 주는 서비스이다. 논문의 주제에 적합한 저널을 선정하는 것은 상당히 복잡하고 시간이 많이 소요되는 작업으로, 이전에는 인간의 수작업이 필수불가결한 것으로 여겨졌다. 하지만 Word2Vec의 적용으로 인해 사람의 손을 거치지 않으면서도, 빠르면서 신뢰할 만 한 추천 저널 결과를 얻는 것이 가능해졌다.
맺음말
자연어 처리는 영상 인식과 더불어 딥러닝 기술이 적용되기 좋은 분야로 알려져 있다. Word2Vec은 인공신경망이 자연어 처리에 어떻게 적용될 수 있는지를 보여 주는 신호탄과도 같다. 즉, Word2Vec은 충분히 직관적이고 강력한 고리즘이지만 앞으로 몇 년 내에라도 Word2Vec보다 훨씬 더 뛰어난 자연어 처리 알고리즘이 나올 수 있다.
2017년 초 구글에서 발표한 자료에 따르면 사람과 고양이의 얼굴을 지도 학습이 아닌 비지도 학습 알고리즘을 이용하여 각각 81.7%, 74.6% 정도의 정확도로 구별해냈다고 한다. 몇 년만 더 지나면 자연어 처리 분야에서도 인간이 지도해 주지 않더라도 단어와 문장의 의미를 정확히 ‘이해’하는 알고리즘이 나올지도 모를 일이다. 소위 ‘인공지능 시대’는 이제 서막에 불과하다.
참고자료
DL4J Word2Vec 항목 문서(https://deeplearning4j.org/kr/word2vec)
답글 남기기