「Python」カテゴリ内の記事 このカテゴリをはてなブックマークに追加 このカテゴリを含むはてなブックマーク (初公開日順)

2020年2月 7日 (金)

Predictor - Actor (- Recollector) モデルと負の学習

今回も失敗した実験である。改造した MountainCarContinuous のアルゴリズミックな学習で、アルゴリズミックな中では、確かに部分的な成功もあるのであるが、しかし、ランダムで単純な学習と比較した場合、早さはもちろん、学習が進むためのステップ数でも、最終的な到達点でも、アルゴリズミックな方法のほうが負けてしまったのだった。悔しいが、今回のアルゴリズミックな方法は、まったくの無駄だったと結論せざるを得ない。何か活かせる方法を今後、考えたい。

そのアルゴリズミックな学習とは、まず第一に、「環境」+「行動の提案」→「予想」を行う Predictor を学習しておき、その誤差逆伝播法を利用して「環境」+「予想」→「行動の提案」を行う Actor を学習するというもの。逆伝播がちゃんと使えるかが問題としてあったが、概ね使えるという実験結果を得た。

次に、Predictor と Actor の同時学習も試みた。その際に、Actor の「行動の提案」と、Predictor から逆伝播された「行動の提案」がどちらが良いかというのが以前私がレポートした「競争的学習」のようになっていると考えた。それについて「負の学習」を試み、それが学習を早くするという結果を得た。

しかし、この二つのアルゴリズミックな学習の結果・部分的な成功は、先に述べたように、ランダムで単純な学習と比べると負けていたのだった。

続きを読む "Predictor - Actor (- Recollector) モデルと負の学習"

2020-02-07 01:45:07 (JST) in Python 人工知能・機械学習 | | コメント (1)

2019年5月16日 (木)

ニューラルネットで負の学習: 競争的な学習の実験 その2

概要


競争的学習において、勝った例を負けた側が学習するだけでなく、負けた例と「若干」逆側になるように勝った側が学習することにより、学習が劇的に改善した。

競争的学習とは、ここでは、単純な2入力2出力(入出力いずれもアナログ値)の関数の学習を3層のニューラルネットワークで行う。ただし、別の初期値を持つ同じモデル二つについて、学習の際は、正解の出力がわからないが、その二つのモデルのうちどちらがより正解に近いか、すなわち、その「勝者」がどちらかだけはわかるという設定とする。

「若干逆側」にするときは、悪い例が離れていればすでに悪くなるのは避けられているのであるから、影響は 0 に近くする。悪い例が予測とほぼ一致するときは「逆側」を強く定めることができないので、これもしかたなく影響を 0 に近くする。そこそこ近い悪い例についてのみ逆側にしっかり倒して学習するようにする。

続きを読む "ニューラルネットで負の学習: 競争的な学習の実験 その2"

2019-05-16 05:49:50 (JST) in Python 人工知能・機械学習 | | コメント (4)

2019年1月26日 (土)

機械学習の練習のため競争的な学習の実験をしてみた

単純な2入力2出力(入出力いずれもアナログ値)の関数の学習を3層のニューラルネットワークで行う。ただし、別の初期値を持つ同じモデル二つについて、学習の際は、正解の出力がわからないが、その二つのモデルのうちどちらがより正解に近いか、すなわち、その「勝者」がどちらかだけはわかるという設定とする。

Ptyhon を用いた実験により、初期値の与え方が普通とちょっと違うのもになったが、そのような設定でもちゃんと学習が進むことが確かめられた。

なお、それを便宜的に「競争的な学習」と私は呼んでいるが、Wikipedia にある "Competitive Learning" (競合学習) とは別物のはずである。

続きを読む "機械学習の練習のため競争的な学習の実験をしてみた"

2019-01-26 00:23:09 (JST) in Python 人工知能・機械学習 | | コメント (7) | トラックバック (0)