※ 本ページの内容には、
からの引用を多く含みます。
機械学習 (machine learning)
Arthur Samuel (著名なAI研究者)
"Field of study that gives computers the ability to learn without being explicitly programmed" (1959)
明示的にプログラムせずにコンピュータに学習能力を与える研究分野
機械学習では蓄積されたデータからルールを発見する学習方法自体をプログラムする。
機械学習は観測データからルールの仮説を出力する過程を実現する技術といえる。
機械学習で、ルール発見のための材料となるデータを 訓練データ (training data) と言う。
訓練データに含まれない未知データに対しても正しく予測する事 (汎化 (generalization)) が目的
強化学習 (reinforcement learning)
Q学習 (Q-learning)
Q(s, a) ← Q(s, a) + α [ r + γ maxpQ(s', p) - Q(s, a) ]
ここで、maxpQ(s', p) の部分は、Q(s', 行動) の値を取り得る行動全部で調べて最大値を求めることを意味する。
Q : Qテーブル
s : 現在の状態
a : 現在の状態でポリシーによって選択される行動
r : 行動の結果得られる報酬
s' : 行動の結果の次の状態
α: 学習率 (learning rate)。学習で一回につきQに対して加える変化量の割合の目安
γ: 割引率 (discount factor)。将来獲得できる報酬をどれくらい現在の価値として考慮に入れるかを表す目安
r : 行動の結果得られる報酬
※ 割引率 γ (ガンマ) と報酬 r (アール) が紛らわしいので注意すること。
シミュレーションの際の代表的なポリシーとして、ε-greedy法とsoft-max法がある。ここでは ε-greedy法 のみ示す。
ε-greedy法
ε は 0 以上 1 以下の値だが、一般的には 0.1 や 0.01, 0.001 など小さい値が選ばれることが多い。
値をうまく調整することにより、大体の場合は一番報酬の高そうな行動を選択するが、小さい確率でランダム選択して他の行動も試してみる、という風に設定できる。
Q学習がうまく進んだ場合、最適の行動が獲得できる。
倒立振子 (とうりつしんし inverted pendulum) は支点よりも重心が高い位置にある振り子のことだが、今回は、下に台車を置き、台車の上に棒状の倒立振子を乗せて、倒立振子ができるだけ倒れてこないような制御を学習させる。
中央位置から制御を始めて倒立振子が倒れてしまうまでの間を エピソード (episode) とする。各エピソードでは短い時間間隔ごとに制御をしていくものとし、時間間隔一個分を ステップ (step) で表す。
エピソードごとのステップ数をできるだけ大きくすることが学習の目的となる。ただし、ステップ数 10000 で打ち切りとしている。
通常のステップ終了ごとに報酬 +1 を与え、失敗の場合は報酬 -10000 を設定することで、ステップ数が大きくなるよう学習していくことになる。
今回の演習では、10000 エピソードで学習させ、最後に1回最終テストで1エピソード実行する。
Q学習のパラメータ α, γ および ε-greedy のパラメータ ε をうまく調整し、少なくとも 1500 ステップ以上、望むらくは数千ステップまで、続けられるようにする。
雛形ZIPファイルがTeams「人工知能」チームの「ファイル」の「機械学習」フォルダにあるので、ダウンロードし、適当なフォルダに展開し、ファイル InvertedPendulum.java に以下の変更を加える。
今回の演習では複数のJavaソースファイルからなるプログラムのため、実行のためには、 ソースを変更したら毎回、javac コマンドでコンパイルした後、java コマンドで実行する。
具体的には、コマンドプロンプトまたはPowerShellを起動し、以下を順に実行する。
cd /D "作業フォルダ" (コマンドプロンプトのとき)
cd "作業フォルダ" (PowerShellのとき)
javac InvertedPendulum.java
※ Javaのバージョンが古くエンコードの問題でエラーが出る場合は、以下のコマンドを入れる。
javac -encoding UTF-8 InvertedPendulum.java
java InvertedPendulum
調整の結果、最終テストで少なくとも 1500 ステップ以上、望むらくは数千ステップまで、続けられるようになったら、以下をWordファイル (拡張子 docx) にまとめて PDF ファイルとして保存し、授業Webページから提出。