見出し画像

【E資格】7週目〜強化学習〜【AI】

【反省】しばらくお休みしてました

こんにちは
サラリーマンのゆゆです。

申し訳ございません。しばらくnote更新できてませんでした。。
事情はあるのですが反省しております。

E資格の勉強の状況をまず報告しますと、Aidemyのコース自体は最後の「E資格修了試験」以外は添削問題も含めすべて終えることができました。

完全に言い訳ですが、note更新できなかった理由の一つに、前回の続きの「強化学習」はコースは終えても復習というか再勉強しないとnoteに「難しかったです」としか書けない状況だったというのがあります。

さらに、すぐ「強化学習」の勉強を再開すればよかったのですが、次のコースを先に進めてしまいズルズルとnoteを更新できない状況を作ってしまいました・・・

Aidemyのコース自体は終えてるので、今後は定期ではなくまとまったらアウトプットしていきたいと思います。

強化学習を勉強しての感想

強化学習と言えばまさにAI感のある分野ですよね。何年か前にニューラルネットワークを使った強化学習で囲碁でプロに勝ったというのはTVでもニュースになりました。

勉強した(追加勉強中ですが)感想は、他の機械学習の分野に劣らず内容が難しくボリュームも多く大変でした。

そもそも強化学習のイメージというか難易度を見誤ってました。

もちろん簡単とは思ってはなかったのですが、「強化学習は報酬を多く獲得するように学ばせる」程度の知識はあり、(勉強したことないくせに)勝手なイメージで基礎的なところはそこまで難しくはないだろうと高をくくっていたので、強化学習のコースはディープラーニングを使った強化学習がメインで大変なんだろうなと思っていました。

しかし、この「強化学習は報酬を多く獲得するように学ばせる」が想像以上に奥深く、基礎的な概念(や用語)がまず理解できませんでした。

そして、ほとんどが「強化学習は報酬を多く獲得するように学ばせる」関係の学習内容でしたので、それだけ基礎がそもそも大変というAidemyの判断だったのでしょう。(というかE資格の出題傾向的にか?)

本noteでは、「強化学習」の初学者が勉強を始めるにあたり、理解の助けになるような内容を記載しましたので、これから強化学習を勉強しようと思われる方は是非ご覧ください。

ちなみにAidemyのコースの順番は、

「理論から学ぶ強化学習」
                ↓
「スクラッチ実装して理論を体得する強化学習」

となるのですが、
「理論から学ぶ強化学習」はある程度強化学習を知っている人向けと思いましたので、全くの初学者は「スクラッチ実装して理論を体得する強化学習」から勉強した方が理解しやすいと思います。

・理論から学ぶ強化学習
・スクラッチ実装して理論を体得する強化学習
(難易度★★★☆)

コースは「理論から学ぶ強化学習」と「スクラッチ実装して理論を体得する強化学習」と2つに別れているのですが、共通項目も多く区別せず書いていきます。

用語

上記に用語がわからないと書いたのですが、コースの最初の3行が、

強化学習とは、ある特定の環境のなかで、試行錯誤しながら最適な行動を発見する、機械学習の手法の一つでゲームAIなどによく使われる手法です。

強化学習に不可欠となる価値関数について考えます。

Aidemy「理論から学ぶ強化学習」より

で、まず「価値関数」がわからなくつまづきます。

強化学習といえば、エージェントがいて行動に対して報酬を得て・・・から始まるかと思いきや、そういった知識は事前知識という前提ですかね。。

このあと方策反復法の説明に続き、どんどん先に進むことはできるのですが、結局用語の理解をおろそかにしていると、わからないままコースが終わっていきます

それは他のコースでも同じですが、強化学習はわからない度合いが高いような気がします。

用語の理解がしにくい理由に、

  • 「強化学習」では似たような用語(報酬と価値など)が多い

  • 「方策」などわかるようでピンとこない用語が出てくる

  • そもそも用語が多い

というのがあるのかなと思います。

これから学習される方にはつまづいて欲しくないので、もし用語でわからないことがありましたら下記noteを参考にしてください。

学習前の心構え

  • グリッドワールドなど簡単な例を扱う割には出てくる数式は難しい

  • 数式は基本的には期待値(Σ確率×値)を表していると思うといい

強化学習の簡単な流れ

実際の歴史的な流れはわかりませんが、私の理解での簡単な流れをまとめました。

コースで主に実装を伴って勉強するのは1〜11で、DQNなどのニューラルネットワーク系はそこまで出てきません。

  1. 強化学習というのは、収益が高くなる行動指針(方策)を見つけるもの

  2. 状態や行動というのは基本的にはランダム性があるので、ある状態から得られる収益というのは確定ではなく、代わりに収益の期待値である「価値」というものが高くなる行動指針を見つける

  3. 価値というのはベルマン方程式を使って連立方程式を解くことで算出できる

  4. しかし、ベルマン方程式はスモールワールド(2マスグリッドワールドなど)でしか解くことはできない

  5. そこで動的計画法と呼ばれる見た目はベルマン方程式と同じ更新式を使って解く

  6. 動的計画法は遷移確率など、そこそこ事前情報が既知でないと使えない

  7. そこで、モンテカルロ法と呼ばれる実際ゲームをやらして収益を直接獲得するということを何回もやらして平均を取ることで価値を算出するという方法が出てくる

  8. しかし、モンテカルロ法はゲームが終わるまで価値を算出することはできないので、時間がかかるし、終わりのないゲームには使えない

  9. そこで、TD法と呼ばれる動的計画法とモンテカルロ法の間の子を使って価値を算出する

  10. TD法にはSARSAQ学習と呼ばれる2種類の方法が有名

  11. どちらがいいかは判断難しいが、ゲームをやらして効率よく最短ルートを取るのがQ学習で、安全ルートを取るのがSARSAという私の勝手なイメージ

  12. SARSAにしてもQ学習にしても、状態と行動に対して価値がいくつかという表が必要であり、3×4グリッドワールドならまだしも囲碁の世界では表なんて無限にあって書ききれないので、その表をニューラルネットワークで代替したのが、深層強化学習と呼ばれる手法

  13. 深層強化学習は学習を安定させるのが非常に難しく、これに幾つかの工夫を加えて改良したものがDQN(Deep Q-Network)と呼ばれる手法

  14. このDQNを使って作ったAIが多くの簡易ゲームで人間を超える成績を収める

強化学習における相対する考え方

強化学習の組み立て方において、相対する考え方が出てくるのですが、説明ではいろいろ入り混じって関係性がわからなくなります。

ですので、強化学習を勉強する際は下記の項目が相対する考え方で、実際はどちらかではなくその中間を用いるケースが多いということを理解するといいかもしれません。

  1. 価値ベース ⇔ 方策ベース

  2. 探索(ランダム) ⇔ 戦略(greedy)

  3. モンテカルロ法 ⇔ 動的計画法

さいごに

今回は強化学習を始めるにあたって、私自身が事前に知っておきたかったことを書きました。

強化学習の説明自体はほぼないので、残念に思われる方もいらっしゃるかもしれませんが、皆様の理解の一助になれば幸いです。

この記事が気に入ったらサポートをしてみませんか?