こんにちは､ そしてお帰りなさい｡
前回の講義では､ 実際に環境の定義､ 価値観の表現､ 罰と報酬､ 環境での行動などを仕上げたり､
確定させたりして終了しました｡
この講義で私が行いたいのは､ トレーニングの紹介､ モデルをどのようにトレーニングするかという考え方､ そして､
それを始めるための手助けです｡
そして､ 次の講義では､ その解決策と､ より詳細なステップを提供します｡
そこで､ モデルのトレーニングに何が必要かというと､ トレーニングが必要なのです｡
これは､ 次のステップでモデルを学習させる際に使えるアプローチです｡
ランダムな非終末状態､ つまりエージェントの白い四角を選び､ それをトレーニングのエピソードとして始めたいのです｡
そして､ もちろん､ 現在の状態に対するアクションを選択したい｡
エージェントが環境内を動き回れるようにする必要があるのです｡
そこで､ 今回のチャレンジでは､ 我々とエージェントの行動を､ イプシロングリーディを使って選択することにしました｡
このアルゴリズムは､ 通常､ エージェントにとって最も有望な行動を選択するが､ 時には､ より有望でない選択肢を選択することもある｡
エージェントに環境探索を促すためには､ どうしても最適なポリシーを見つけたいのです｡
そして､ 選択されたアクションを実行し､ 次の状態へ遷移したい｡
次の場所に移動する｡
なぜこんなことを言うかというと､ この問題を解決するために､ これをどのように関数に分解できるかを皆さんに考えてほしいのです｡
次に､ 新しい状態になったときに報酬を受け取り､ 時間差を計算する必要があります｡
アクションペアの前の状態のQ値を更新し､ 新しい状態または現在の状態が終端状態であれば､ その後､
終端状態に移行することになるのです｡
そうでなければ､ 2番目のステップに進むことになる｡
だから､ 全体の流れとしては､ 1000話分走ることを目標にトレーニングしていくことになります｡
これにより､ 商品の梱包エリアと､ この都市の他の場所との間の最短経路を計算する十分な機会が得られます｡
すごい｡
そこで､ あなたならどうアプローチするか考えてみてください｡ 私は､ これを解決するためのアイデアを提供したいと思います｡
そこで､ 私たちのソリューションでは､ 次のような関数を使用することになります｡
コードセルなので､ 実はコメントアウトできるんです｡
申し訳ございませんでした｡
ドル箱はいらない｡
これらをコメントアウトして､ 最初の一歩を踏み出す手助けをしたいと思います｡
全体として､ これらの関数がモデルのトレーニングのステップを定義することになります｡
Pythonで関数を作成する際に､ 端末の状態にどのようにアプローチするかを見てみましょう｡
まず最初に､ もちろん関数をそのまま定義したいと思います｡
端末の状態です｡
そして､ これらは､ 分解するのに役立つかもしれないアイデアを提供するために表示される関数の名前です｡
ここで行いたいのは､ 現在の行インデックスと現在の列インデックスを取得することです｡
これはエージェントの位置を示すもので､ 報酬としてtrueまたはfalseを追加できます｡
だから､ if文が必要なのです｡
だから､ 私たちの報酬を設定しましょう｡
現在の私たちの
行番号です｡
また､ 現在の列のインデックスは､ その状態にある場合､ 負の1に等しくなります｡
falseやother or elseを返すことになる｡
また来たいと思います｡
本当です｡
とても分かりやすいですね｡
このように､ 終端状態で存在するかどうかを判断した後､
始端位置を求めます｡
ヒントとして､ 現在の行インデックスと現在の列インデックスを使用し､ numpyにランダムを設定することを見てみましょう｡
それを環境の行環境列にランダムに初期化したいのです｡
しかし､ 次の講義では､ その内訳がわかります｡
残りの機能については､ イメージをつかんでいただくためのメモを添えてご覧ください｡
この方法は､ 勉強にもなるし､ アイデアを出すのにも役立つので､ ぜひ皆さんも試してみてください｡
そして､ これがきっかけとなるのです｡
だから､ 次の講義で解答を得ることができるので､ 心配しないでください｡
そして､ 実際にイプシロン割引係数や学習率などをトレーニングに割り当てて､ トレーニングを実行し､
結果を見るという流れで締めくくります｡
すごい｡
またここでやめましょう｡
これを解いてみてください｡
しかし､ もしそうでない場合は､ 次の講義に進み､ これらの関数を定義するためのトレーニングの解答を得ることができます｡
では､ 次の講義でお会いしましょう｡