見出し画像

TWSNMP FC: brain.jsで作ったAIアシスタントにSyslogの分析を頼むと意味不明のことを言われた

今朝は猫が2時に起こしてくれました。今日からbrain.js

を使ってSyslogの分析をするためのAIアシスタントを作ることを察知したのだと思います。さすがに2時に起きるのは辛いので二度寝しました。2回目は4時でした。今回作ろうと思ったAIアシスタントは、

のドキュメントの

const net = new brain.recurrent.LSTM();

net.train([
 { input: 'I feel great about the world!', output: 'happy' },
 { input: 'The world is a terrible place!', output: 'sad' },
]);

const output = net.run('I feel great about the world!'); // 'happy'

のサンプルコードに触発された結果です。
開発するAIアシスタントのイメージは、

画像1

syslogのタグとメッセージに対して人間が分類欄に何か分類するための文字列を入力してあげます。サンプルのソースコードのinputがメッセージとタグでoutputが分類です。このデータで学習させれば、同じようなログは同じ分類になるはずというアイデアです。AIアシスタントの分類は結果欄に表示します。なんとなくできたので試してみると、結果欄は、意味不明の文字列がならんでいます。
何が悪いのかわからないのでサンプルの処理を試してみることにしました。

  const trainingData = [
   { input: 'I feel great about the world!', output: 'happy' },
   { input: 'The world is a terrible place!', output: 'sad' },
 ]
 const net = new brain.recurrent.LSTM()
 net.train(trainingData, {
   iterations: 2000,
   timeout: 1000 * 20,
   errorThresh: 0.01,
 })
 console.log(net.run('I feel great about the world!'))
 console.log(net.run('terrible'))
 console.log(net.run('hehe'))

結果は、

happy
lace!sad
sad

1番目は、サンプルと同じなのでOKですが、3番目は学習データにある答えなのでまあ良いとして、問題は2番目です。どうやって作ったかわからない言葉'lace!sad'を答えています。
人間に教えるのも難しいですが、AIに教えるのも難しいです。AIアシスタントの気持ちを理解して何が言いたいのか時間がかかりそうですが、今日は時間切れです。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。