11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chainerで機械学習と戯れる: ログファイルの行から /apple/i を含む行を見つける、を学習できるか?

Last updated at Posted at 2015-07-13

はじめに

k/Nの実数入力から k を出力できるのか? の後にふと思ったのが、ログファイルの1行を入力とみなして例えば単純に特定の文字列を含む行を見つけられるのか? ということでした。

1行の中の各文字を [char byte code]/255 の実数すると、1行は普通のベクトルで表されます。
ここから特定のパターンを学習できるのでしょうか。

お題: ログファイルの行から /apple/i を含む行を見つけられるか?

問題

  • 問題: ログファイルの各行から /apple/i を含む行を見つける、ということを学習できるか?
  • 入力: 1行は100文字以下からなるとする。1文字は [char byte code]/255 という実数で表される。(入力層は100個)
  • 出力: 正規表現の /apple/i がマッチする行のときにy2=1とする。何もマッチしないならy1=1とする。(出力層は2個)

実験

今回使った log.txt は 1000行で、/apple/i にマッチする行は135行あります。
log.txt の90%を学習データ、残り10%を評価データとします。
学習は 100回のbatchで loss が 0.001 以上改善しなければ、打ち切るようにしました。

実験で使ったソースコードはこちらになります。一緒に log.txt もUpしてありますが、うーん、LocalPCのログとは言え結構怖いなぁ。。

結果

ある試行では、7000バッチ目で学習が打ち切りになり、その時の評価データの正解率は約96.0%でした。
中間層は [100,20] のケースのみ試しました(あまり試行錯誤してないです)。
※つまり IN:100 -> H1:100 -> H2:20 -> OUT:2 という構造です。

考察

ログファイルって出現する文字の位置が結構決まっているので、特に工夫をしなくても思ったより高い値になりますね。
一般的にはもっと工夫しないと全然厳しいとは思いますが、こういう形での利用も有りのような気がしました。

さいごに

個人的に少し有意義な結果が得られたような気がします。
監視システムとか特にルールを教えなくても、エキスパートの振る舞いを見て学習してくれると嬉しいんですけどねー

足し算ゲームをChainerを使って強化学習できるか?

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?