본문 바로가기
성장하기

[E-6] 작사가 인공지능 만들기

by 예시카의 일상 블로그 2021. 1. 20.

Opening


  • 자연어 처리에 가장 기본이 되는 시퀀스2시퀀스 모델에 대해서 배웁니다. 가장 기본이 되는 개념들을 집고 넘어갑시다.
  • 시퀀스2시퀀스, 코퍼스, 토큰화의 뜻은 무엇일까요?
    • [예시 답안]
    • 시퀀스2시퀀스: 모델은 한 문장(시퀀스)을 다른 문장(시퀀스)으로 변환하는 모델입니다. seq2seq를 Encoder-Decoder 모델이라고도 합니다. 아래와 같이 seq2seq 모델은 인코더(Encoder)와 디코더(Decoder)로 구성되어 있기 때문입니다. 문자 그대로 인코더는 입력 데이터를 인코딩(부호화)하고, 디코더는 인코딩 된 데이터를 디코딩(복호화)합니다. 즉, 인코더는 입력을 처리하고 디코더는 결과를 생성합니다.
    • 코퍼스: 말뭉치(Corpus)란, "대량의 텍스트 데이터"입니다. 그냥 텍스트가 아닌, 자연어 처리 연구나 애플리케이션을 염두에 두고 수집된 텍스트 데이터를 부르는 말입니다. 텍스트 형식의 데이터에 담겨있는 사람의 지식이나 사고방식 등의 핵심을 추출하는 것이 중요하겠죠? 텍스트 데이터를 품사 단위로 Labeling 하여, 컴퓨터가 다루기 쉬운 형태, 예를 들면 트리 구조 등으로 가공하여 사용하는 것이 자연어 처리에서 일반적인 일입니다. 자연어 처리에 사용되는 유명한 말뭉치는, 위키백과, 구글 뉴스, 유명한 문학 작품 등이 있습니다.
    • 토큰화: 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 부릅니다. 토큰의 기준을 단어(word)로 하는 경우, 단어 토큰화(word tokenization)라고 합니다. 다만, 여기서 단어(word)는 단어 단위 외에도 단어 구, 의미를 갖는 문자열로도 간주되기도 합니다.

Check-up


  • "텐서 플로우에서의 데이터 전처리" 과정을 다시 한번 복습해 봅시다.
    • [예시 답안]
    • 정규표현식을 이용한 corpus 생성
    • tf.keras.preprocessing.text.Tokenizer를 이용해 corpus를 텐서로 변환
    • tf.data.Dataset.from_tensor_slices()를 이용해 corpus 텐서를 tf.data.Dataset객체로 변환
  • "텐서"의 뜻은 무엇인가요?
    •  [예시답안]
    • Tensor는 배열의 집합이다.
    • 차원의 수는 Rank와 같은 말이다.
    • 배열의 차원에따라 불리는 이름이 달라진다.

Closing


  • 자연어 생성이 잘 되었는지 평가하는 방법에는 어떤 것들이 있을까요?
    • [예시답안]
    • 외부 평가(extrinsic evaluation): 두 개의 모델 A, B가 있을 때 이 모델의 성능은 어떻게 비교할 수 있을까? 두 개의 모델을 오타 교정, 기계 번역 등의 평가에 투입해볼 수 있다. 그리고 두 모델이 해당 업무의 성능을 누가 더 잘했는지를 비교하면 된다. 그런데 두 모델의 성능을 비교하고자, 일일이 모델들에 대해서 실제 작업을 시켜보고 정확도를 비교하는 작업은 공수가 너무 많이 드는 작업이다. 만약 비교해야 하는 모델이 두 개가 아니라 그 이상의 수라면 시간은 비교해야 하는 모델수만큼 늘어날 수 있다.
    • 내부 평가(Intrinsic evaluation): 바로 모델 내에서 자신의 성능을 수치화하여 결과를 내놓는 것이다. 외부 평가보다는 어쩌면 조금은 부정확할 수는 있어도 테스트 데이터에 대해서 빠르게 계산되는 더 간단한 평가 방법이다. 여기에 해당되는 펄플렉서티(Perplexity, https://wikidocs.net/21697) and BLEU(Bilingual Evaluation Understudy, https://wikidocs.net/31695)가 있다.

참고자료


 

CategoricalCrossentropy vs SparseCategoricalCrossentropy

Tensorflow는 classification task에서 간편하게 사용할 수 있는 cross entropy loss 함수를 제공하고 있습니다. Binary classification이라면 BinaryCrossentropy를 사용하면 되고, Multi-class classification이..

jins-sw.tistory.com

 

인공지능이 작사를 한다면?

댓글