第1回のエントリはこちら
第2回のエントリはこちら
第1回、第2回のエントリでは、ニューラルネットワークで明細書執筆者を高い精度で推定できたことを示しました。ただし、第1回、第2回では入力データを変化させるだけでした。ニューラルネットワークの開発では、ニューラルネットワークの構造も大きなテーマになると考えられます。ニューラルネットワークの構造としては、層の数やノードの数がまず検討対象となるでしょうが、よく知られているように、初期値を変化させるのも重要でしょうし、各種の最適化方法の利用(第1回、第2回は全てSGDでした)を検討しても良いと思います。
いろいろな手法が考えられますが、まずは層をよりdeepにすることが考えられます。今回の開発では項目数(入力ノードの数)が最大で18個しかありませんので、deepといってもたいした数の層は必要ないと予想できます。とりあえず、「3.文書表現上の癖と、論理展開上の癖の双方」のtrainingデータとtestデータを利用し、隠れ層を2層(ノードは13個、8個)として学習しました。結果は、98%の正解率。90件のtestデータについて2件不正解ということになります。非常に高い正解率です。本件については、ディープニューラルネットワークは必要ないと言えますね。そりゃそうですよね。入力ノードが少なすぎますから。ディープニューラルネットワークの開発を疑似体験するためにはサンプルが不適切でした。まあでも入力データが執筆者の推定に適したデータであったからここまで正解率が向上したとは言えるでしょうか。
当初は、自己符号化器などを利用しながら少しずつ正解率を向上させたいと思っていました。モダンな(といっても自己符号化器が話題になったのは10年前ですが)技術を学習したいと思っていましたから。また、単なるニューラルネットワークではなく、同一層においてあるノードの出力を他のノードに入力するなど、ネットワークの構造にも各種の工夫があり得ます。
しかし、ここまでの結果から判断すると、現在のサンプルではニューラルネットワークの構造や各種のテクニックの有用性を判断できるほどサンプル数がないと考えられます。これ以上の改善の余地はあるのかもしれませんが、仮に、正解率が100%になったとしても、ニューラルネットワークの構造の変更等が効果的であったのか偶然なのか、サンプル数が少なすぎて判断できません。そこで、自己符号化器などを利用した開発は、将来別の案件で試してみたいと思います(今のところ、word2vecやQ学習での開発を体験できれば良いなと考えています)。
さて、第1回~第3回までで、ニューラルネットワーク関連の開発過程を疑似体験しましたので、次回は開発過程で生じ得る発明の特許化について考えてみたいと思います。
第4回のエントリはこちら