データの前処理ばかりやっててまにあう?ーWebアプリ制作日記その8

AIアプリ制作
2020年4月13日。石川県に県独自の「緊急事態宣言」発令!

データの前処理
これから2週間、
残り1カ月の半分を費やす。

で、そのあと、いよいよ、

5.モデルの構築

つまり、

モデルの学習・推論

という機械学習のメインイベントに取りかかる。

データの前処理に2週間も使って、
メインのモデル構築、間に合うのか?

うむ。
たしかに心の片隅では、

間に合うわけないじゃん!

とサジを投げかけている自分がいる。

ただ、現在、AI開発の世界で、
モデルを一から作ることはほとんどない。

たとえば、今回つくる

「Seq2Seq」

という文章生成モデル。

この「Seq2seq(Sequence to Sequence)モデル」とは、

モデルの入力と出力が時系列データになっており、
時系列データを別の時系列データに変換してくれるもの

で、
機械翻訳チャットボットメールの自動返信など、
さまざまなアプリで利用できるニューラル・ネットワークだ。

大まかなしくみはこんな感じで、

『ゼロから作るDeep Learning 2』p288 図7ー5

Encoder Decoder モデルとも呼ばれる。

ここでは、
Encoder(エンコーダー)
「吾輩は猫である」という文章をエンコード(符号化)し、
Decoder(デコーダー)が、
エンコードされたデータをデコード(復号)している。

これを当初、

「Pytorch(パイトーチ)

という、
いま人気急上昇中のライブラリでつくる予定だった。
(プロはみんなこれ?)

しかし、時間がないなか、
いまから新しいライブラリを学習している余裕はない。
『Pytorch による発展ディープラーニング』
という人気本も準備したが、

キカガク長期コース講師からも勧められた一冊。

キカガク長期コースを卒業してから、
改めて着手しよう。

そこで、
キカガク長期コース講師のアドバイスを受け、
プログラミングの経験がなくても簡単にコードを書くことができる、

「Keras(ケラス)

を選んだ。

ロゴ?

この「Keras」には、
モデルの作り方が、

1.  Sequential クラス
2.Function API

の2つあって、
2のFunction APIを使うと、
Seq2Seqのような複雑なモデルもスムーズに定義できるという。

機械学習では、
データの前処理に時間を取られるので、
モデルは「転移学習」(*1)「ファインチューニング」で
定義、学習させるのが一般的な流れになっているのだ。

つまり「Keras」を使えば、

多分、大丈夫!(泣くな!)

まにあうかもしれない!

のだ。

あと1カ月、がんばろう。

*1 モデルを一から作るのではなく、優秀な学習済みモデルの構造、パラメータを引き継ぎ、学習を行うこと。ファインチューニングでは引き継いだパラメータは調整するが、概念は同じ。

 

Follow me!