keras의 Functional API를 사용하여 seq2seq 모델을 구축하는 개요 편

무슨 기사?



심층 학습 모델링이거나 이것을 시도하고 싶지만 어떻게 구현해야할지 모르는 사람들을 위해
비교적 자유도가 높고 적당히 추상화 된 프레임 워크로서 Keras의 functional API를 사용하여
sequential에서는 어려운 seq2seq를 가능한 한 간단하게 구현해 본다.

목차


  • 개요편(이마코코)
  • 전처리편
  • 모델 구축 및 학습편
  • 추론편
  • 모델 개량편(아직 만들지 않았다)

  • 해결하는 작업



    영국 → 일의 기계 번역 모델을 구축합니다.
    문자열은 미리 단어 단위로 분해되어 있는 것으로 합니다.
    구체적으로 다음 데이터를 사용합니다.
    htps : // 기주 b. 코 m / 오다시 / s

    모델 개요



    먼저 입력 단어 열을 단어 ID로 변환하여 적절한 차원에 포함합니다.
    그런 다음 LSTM을 사용하여 입력 단어 열에 해당하는 포함 벡터의 가변 길이 벡터 열을 사용합니다.
    고정 길이의 특징 벡터인 두 개의 LSTM 셀의 숨겨진 상태 h, c로 인코딩합니다.

    인코딩 된 숨겨진 상태 h, c 및 문장 시작을 나타내는 특수 단어 (내장 벡터)를 다른 LSTM에 입력하고,
    LSTM의 출력을 전체 결합층에 전달하고 softmax를 취하여 첫 번째 단어가 각 단어일 확률을 얻습니다.
    첫 번째 단어가 각 단어 인 확률의 argmax를 취하면 첫 번째 단어의 추정 결과가됩니다.
    이후, t단어째의 단어의 매입 벡터와 t단어째의 시점의 숨겨진 상태 h, c로부터 차례차례로 단어를 생성해 가, 출력의 단어열을 얻습니다.

    그림으로 하면 다음과 같은 느낌입니다.



    같은 색의 사각형은 가중치가 같습니다.
    구체적인 단어가 들어 있는 사각형의 실제 입력은 단어를 해당 단어 ID로 변환한 것입니다. 편의상 단어 자체로 쓰고 있습니다.
    예를 들어, 이번에 작성한 코드에서 각 셀간에 전달되는 값의 차원을 써 두었습니다만, 그들은 하이퍼 파라미터입니다.
    신경 기계 번역에 한하지 않고 seq2seq는 더 다양한 모델이 있지만, keras에 익숙해지는 것을 중시하고 간단한 모델로 갑니다.

    환경 구축



    다양한 귀찮기 때문에 Sagemaker의 노트북 인스턴스를 사용합니다.
    여러 라이브러리와 GPU 인스턴스라면 GPU 환경이나 구축이 끝나고 가격 무려 0.0464 USD/hour부터!
    GPU를 사용하면 ml.p2.xlarge로 1.26 USD/hour라고 부르기 때문에, 디버깅을 ml.t2.medium에서 하고, 학습시에만 ml.p2.xlarge 사용하는 등으로 싸게 억제할 수 있을까.
    수중에 게이밍 PC 있으므로 수중에서도 할 수 있습니다만, 무언가와 번거롭기 때문에 최근에는 쭉 노트북 인스턴스 딱딱하고 있습니다.

    참고



    전처리 부분은 하기
    어텐션을 이용한 신경 기계 번역
    htps //w w. 천식 rfぉw. rg / thoto ls / xt / n mt_u th_atenchion

    학습·추론 부분의 코드의 베이스는 하기
    Sequence to sequence example in Keras (character-level).
    htps : // 케라 s. 이오/에ぁmpぇs/lstm_세q2세q/

    학습에 사용한 데이터는
    htps : // 기주 b. 코 m / 오다시 / s

    이 기사의 코드가 들어있는 저장소
    htps : // 기주 b. 코 m / 나기 톤 / 시 mp ぇ _ MT

    좋은 웹페이지 즐겨찾기