・深層強化学習をビジネスに役立てるにはどうすれば良いのか?
・AIに自然言語を理解させるにはどうすれば良いのか?
について、考えてみたという内容です。
記事構成としては、
- 深層強化学習のビジネス応用について
- AIの知能獲得と言語獲得手法(妄想)
- 最新の深層強化学習を学べるおすすめ本3冊の紹介
となっています。
先日、拙著「つくりながら学ぶ! 深層強化学習 ~PyTorchによる実践プログラミング~」を発売させていただきました(18年6月28日)。
現在は、どのようにして深層強化学習をビジネスに役立てるのかを考えています。
そこで本記事でもそのようなことを書こうとしたのですが、途中から、脳科学、自由エネルギー原理、サピエンス全史、ホモ・デウス、デジタルネイチャーなど、別のところへ思考がズレていきます。
ビジネス的に役立つことは少ない記事です。
(一応記事の最後に「最新の深層強化学習を学べるおすすめ本3冊の紹介」があります)
最近の私の頭の中の妄想を言語化してみた内容となっています。
お時間あるときに、気軽に読んでいただければ幸いです。
おおざっぱに深層強化学習とは
深層強化学習の概要について説明します。
まずは強化学習について説明します。
おおざっぱに強化学習とは、良くしたい指標値(報酬)はあるけれど、どうすればその指標値を良くできるのか、その手法が分からない対象を攻略するための学習手法です。
強化学習の関数(システムが受け取る情報を入力とし、最適な行動を出力するもの)にディープ・ニューラルネットワークを使用した強化学習を、深層強化学習と呼びます。
例えば囲碁であれば、勝負に勝つという指標はありますが、各局面においてどこに石を打てばよいのかの正解は分かりません。
このとき、盤面の状況を入力とし、どこに石を打てばよいのかを出力するニューラルネットワークを学習させるのが、深層強化学習です。
別の例としては、Googleのデータセンターの冷却制御が挙げられます。
データセンター内の冷却に使用する電力削減という指標はありますが、どのように空調なり水冷装置などを稼働させるのがよいのかは分かりません。
その制御手法を学習させるのが深層強化学習です。
・Googleがデータセンター冷却電力を40%削減、DeepMindのAIを活用
深層強化学習を研究する2つのモチベーション
深層強化学習は、主に2つのモチベーションから研究が盛んに行われています。
人間が行う高度な知的処理を代替したい
1つ目のモチベーションは、「人間が行う高度な知的処理を代替したい」です。
代替したい知的処理の応用先としては以下などが挙げられます。
・FinTech:株・為替のトレーディング、ポートフォリオマネジメント
・Edtech:オンライン教育において、効率的な学習を支援するパーソナライズ機能
(学習者の小テストの正解率を報酬とし、それを最大化するコンテンツの提示、カリキュラム設計)
・ヘルスケア:患者の画像データや血中成分データなどから次に投与する薬や施術の決定
・ロボティクス:所望の動作を実現するモータの制御ルールを学習させる、自動運転
・需要予測:サプライチェーンマネジメント、エナジーマネジメント(HEMS、グーグルのデータセンタの冷却制御、スマートシティ)
・自然言語処理:テキスト要約、テキストマイニング(情報抽出)、翻訳など
・戦略構築:囲碁、将棋、経営戦略(人・モノ・金・情報といった経営資源の最適配置)
など。
ヒトの知能のメカニズムを知りたい
2つ目のモチベーションは「ヒトの知能のメカニズムを知りたい」です。
人間らしい高度な知的処理を行えるAIを作ることでヒトの知能を知るという、エンジニアリング的発想です。
この方面でいま盛んなのは「マルチエージェントシステム」の研究です。
マルチエージェントシステムとは、動作するエージェントが複数体、一つの環境内にいるシステムです。
・ディープマインド、人間よりチームワークに優れたAIを開発
人間社会はマルチエージェントシステムです。
個々人が協力し合って、社会が構成されています。
そのためマルチエージェントがうまく動作する仕組みを研究するのは、ヒトの知能の仕組みを知る研究へとつながります(より詳細については本記事後半にて)。
深層強化学習の3つの使い方
深層強化学習の使い方は大きく3つに分類されます。
制御系
センサーとアクチュエーターを持つ制御システムに対して、その制御ルールの構築に深層強化学習が適応できます。
上で挙げた「ロボティクス」は最たる例です。
また金融システムのトレーディングなども、物理的なアクチュエーターは持ちませんが、制御系の一種になります。
戦略構築
深層強化学習の2つ目の使い方は対戦戦略の構築です。
囲碁の戦略を学習するなどです。
実は「制御系」と「対戦戦略構築」はきっちり分けられる別物ではないです。
囲碁や将棋のように、時間の進行が離散的で、自分が行動するまで相手が待ってくれるのようなシチュエーションでは、制御系を対戦戦略構築として考えることができます。
このような対戦戦略構築の場合にはモンテカルロ木探索などがアルゴリズムに追加されるため、制御系とは分けて記載しています。
バックプロパゲーションが適用できないシステムの学習
深層強化学習の使い方の3つ目です。
バックプロパゲーションで学習できないシステムの学習手法に、深層強化学習が使えます。
これは個人的には非常に本質的で重要だと考えています。
これは先日@icoxfog417さんが主催してくださった「ACL2018読み会」で、@ymym3412さんがまとめを発表した「Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting」が良い例です。
この論文では、文書要約に強化学習を使用します。
翻訳にせよ要約にせよSeq2Seqの学習には、負の対数尤度を使用して誤差関数を計算するのが一般的です。
負の対数尤度を使用するとはすなわち、教師データとまったく同じ言葉が同じ順番で出力されるように学習させます。
ですが、「私は昨日みかんとりんごを買った」と「私は昨日りんごとみかんを買いました」は本質的には同じ意味です。
教師データが「私は昨日みかんとりんごを買った」だった場合に、「私は昨日りんごとみかんを買いました」と要約した場合もOKと扱いたいです。
そのために文章の要約タスクでは、要約精度の最終的な評価指標としてROUGE(ルージュ)を使用するのが一般的です。
・ROUGEを訪ねて三千里:より良い要約の評価を求めて
「では、ROUGEをニューラルネットワークの損失関数に使えば良いのに・・・」と思いますが、ROUGEの計算はニューラルネットワークでは実現できません(おそらく基本的には)。
このROUGEのようなニューラルネットワークで表せない指標の最大化に向けて、ニューラルネットワークを学習させたい場合に深層強化学習が使用できます。
加えて上記の論文の場合は、文書を要約する際に、要約に重要な文章の選択と、選択した文章の要約という2つのタスクを実施します。
これら2つのタスクにはそれぞれ別のニューラルネットワークが使われています。
しかし2つのネットワークを結合させる部分はニューラルネットワークではありません。
このように、end2endのニューラルネットワークで表せないシステム(複数システムをつなぎ合わせたもの)を学習させたい場合も、深層強化学習が使用できます。
つまり上記の論文は
・ニューラルネットワークで表せない指標を最大化するようにネットワークを学習させたい
・ニューラルネットワークでend2endに構成できないシステムを学習したい
という2つの目的を達成するために、深層強化学習が使用されています。
このようにバックプロパゲーションで学習できないシステムの学習手法として、深層強化学習が使用されます。
(結局バックプロパゲーションは使うので、言葉の定義が微妙ですが、従来のディープラーニングの枠組みでは学習が難しいシステムの学習が可能である、というニュアンスになります)
深層強化学習はどうビジネスに活かせるのだろうか
現状
ここまでの説明で例に挙げた、FinTechやEdTechなどへのビジネス応用が期待されますが、まだまだうまくビジネス化されている話は聞きません。
ですがMSがBonsaiを買収したように、多くの企業が深層強化学習をビジネスドメインで使用するために取り組み始めています。
・Microsoftが強化学習のスタートアップBonsaiを買収して自律型システムの研究開発を推進
ではなぜビジネス応用がまだ実現できないのか
ですが、囲碁のプロに勝てる技術があるのに、なぜ人間の知的仕事を今すぐに代替できないのでしょうか?
ひとつの原因は、深層強化学習のサンプルを使用する効率の悪さです。
深層強化学習はサンプル効率が悪く、膨大な試行数をこなさないと学習できません。
囲碁やゲームはPC上でいくらでもシミュレーションができるため、サンプル効率が悪くても問題ありません。
このようにシミュレーターが存在する課題に対しては、深層強化学習は適用可能です。
しかしシミュレーターが存在しないようなビジネスドメインではサンプル効率の悪さがネックになり、深層強化学習の使用が現状では困難です。
この課題への解決策として、転移学習、One-shot学習、模倣学習、逆強化学習などが考えられ、現在盛んに研究されています。
・ロボットに一発で芸を仕込む新手法、UCバークレーが開発
知能の獲得と言語の獲得の重要性
サンプル効率の悪さが解決され、シミュレーターが存在しないドメインでも深層強化学習が使えるようになった場合、次に問題になるのが、知能の獲得です。
AIをより知的にしたい、物事の因果関係を概念の普遍化して理解させたいです。
例えば物体の動きを予想するのに、犬が行うような予想ではなく、ヒトのようにニュートン力学を使用してAIには考えて欲しいです。
でないとロケットを飛ばすといった複雑な物体移動の予測を行う知的処理はできません。
次に問題になるのは言語の理解です。
人間の高度な知的処理を代替させたいので、人間の指示や人間が生成する情報を理解させる必要があります。
現在の自然言語処理の取り組みは、その統計的情報量の特徴から記号として言語を理解させようとするアプローチです。
ですが、私はこの方針は一定の成果を収めた後、頭打ちになると考えています。
AIに対して本質的に言語を理解させる方法を考える必要があります。
ここらから話が妄想気味へ
ここらから話が妄想へと入っていきます。
シミュレーター環境がないと深層強化学習が難しい問題に対して、産業界にはデジタルツインという手法が存在します。
実空間の物体と同じ物体と、その動作環境をシミュレーターに構築して、実空間のエンジンの故障予知などを検出する技術です。
・東芝のデジタルツイン解説
デジタルツインであれば、現実世界のシミュレーターが存在するので、深層強化学習との相性が良いです。
そしてヒトや生物の脳もデジタルツインの一種と考えることができます。
脳は、過去の経験と現在の周囲の状況から、未来に何が起こるのかを予測し、現在の採るべき最適行動を決めて、実行命令を送る装置です。
この未来予測を行うために、脳は実世界を脳内に再構築したシミュレーターを保持しており、一種のデジタルツインと考えられます。
ただしヒトの脳の場合はデジタルツインとは呼ばず、内部モデルと呼びます。
とくに小脳の運動学習で内部モデルは有名です。
・脳の内部モデル
内部モデル獲得と自由エネルギー原理
脳の内部モデルの話は、運動学習だけでなく認知、推論、思考、言語まで、その概念が広がりつつあります。
ヒトなどの脳内における内部モデルの獲得メカニズムについて、イギリスのFriston博士が**Free-energy principle(自由エネルギー原理)**として、まとめようとしています。
・よくわかるフリストンの自由エネルギー原理
自由エネルギー原理はとても難しい内容ですが、誤解を恐れずおおざっぱに解説してみます。
ヒトにとってデジタルツイン的存在である「脳内の内部モデル」をどうすれば獲得できるのか、そのメカニズムの説明を試みる理論が「自由エネルギー原理」です。
自由エネルギー原理では生物(や知的存在)を、感覚器から入力されるinput情報と、脳の内部モデルから予想した予測inputの差(サプライズ)を小さくする装置と考えます。
入力inputと内部モデルからの予想inputの違い(サプライズ)を小さくするために、脳は外界を適切に予測できる内部モデルを学習しようと試みます。
また、適切に内部モデルを学習するだけでなく、内部モデルからの予想inputが外界からのinputと一致しやすくするために、外界にある不確実性を下げるための行動を選択し、実行します。
外界にある不確実性とは、例えば他者の行為などです。他者が自分の予想しない動きをしないように制限します。
この自由エネルギー原理を深層強化学習の枠組みでみたときには、モデルベースの強化学習と捉えらることができます。
報酬は「エージェントへのinput」と「エージェントの持つ内部モデルから予想input」の差(サプライズ)の小ささになります。
そしてこの報酬を最大化するために、エージェントは内部モデルの学習と、外界の不確実性を下げる最適行動を実行します。
ヒトに例えると、「己の過ちを認め考えを改める」、「他人の行動を自分が予想しやすいようにコントロールする」、の両方をバランスよく行うイメージです。
「他人の行動を自分が予想しやすいようにコントロールする」とはすなわち「信頼のおける人物とビジネスをする」などであり、信頼という概念が数式に取り込まれます。
AIに人間の高度な知的処理を代替させるためには、自由エネルギー原理のような神経科学・脳科学の取り組みと深層強化学習がシナジーを生む必要があるかもしれません。
(※本当は自由エネルギー原理自体が、強化学習などの学習手法を包括しています)
マルチエージェントシステムへの期待
前節では、デジタルツインとして脳が内部モデルを獲得するメカニズムの候補として、自由エネルギー原理をおおざっぱに解説しました。
私は、
・AIをより知的にしたい、知能を獲得させたい(物事の因果関係を普遍化して理解させたい)
・AIに本質的に言語を理解させたい
という目的を達成するのに、自由エネルギー原理やそれに類する概念上での、マルチエージェントシステム構築がカギになると考えています。
以降、マルチエージェントシステムを使用することで、どのようにAIが高度な知能と自然言語の本質的理解を獲得するのかを解説します。
サピエンス全史から人類の知能獲得と言語獲得を考える
サピエンス全史の認知革命とは
そこでまずは人類が高度な知能と、自然言語を獲得した流れを考えてみます。
そこで、サピエンス全史を参考にしてみます。
サピエンス全史では、初期のホモ・サピエンスの生存・繁栄の理由を**「認知革命」**によるものだとしています。
認知革命とは、ヒトが複雑な言語と原始的信仰などの空想的虚構を獲得した出来事です。
この言語と原始的信仰という虚構が集団内のコミュニケーションのベースとなり、大規模集団の維持が可能になりました。
ネアンデルタール人が50人程度の集団を形成できた一方で、ホモ・サピエンスは10倍の500人程度の集団で活動できた考えられています。
そしてこの数の差でネアンデルタール人との物理的な戦闘に勝利し、ホモ・サピエンスは生き残れたのでは推察しています。
因果関係の法則としての原始的信仰
サピエンス全史で提案された初期の虚構である、言語と原始的信仰を自由エネルギー原理の文脈で考えなおします。
自由エネルギー原理に従えば、ヒトや生物は自分の生存可能性を上げるために、サプライズを小さくしようとします。
サプライズとは外界からの脳への入力と、脳が持つ外界の内部モデルの予測の違いでした。
つまりヒトは外界で自分の予想通りの出来事が起こるように行動します。
そのためには、外界の適切な内部モデルを脳内に学習するとともに、外界を自分の内部モデルからずれにくくします。
ここで外界とは要は他者です。
そして他者の行動を自分の予測通りの範囲内に留めるために、コミュニケーションが必要となります。
外敵や自然災害に直面した際には、群れを安全なところまで逃がす必要があります。
その際に、好き勝手行動して予想できない動きをする個体がいることは集団にとってリスクです。
こちらの意図をその個体に対して伝え、予想の範囲内で動くようにコントロールし、集団を統制する必要があります。
このように集団内で統一したルールをもって行動するために、原始的信仰がカギになります。
例えば多くの原始的信仰で、雷は神的存在として特別視されています。
おそらくその一つの理由は、雷が鳴った際に、川辺から避難しないと集団の生存が危うくなるからです。
そのロジックは、
雷がなる→その後大雨が降る→川が増水する→川の近くにいると危険→よって、避難し備えよ
となります。
このロジックを子孫に口伝する、新たに集団に加わった別の群れに理解してもらうというニーズがあります。
しかし、原始のホモ・サピエンスが、この複雑で長い論理の流れをコミュニケーションで相手に納得してもらうえるように伝えられたのかは疑問です。
雷を知らない子供や、新たに加わった群れがいたとしたら、途中でなぜ?と疑問を挟んだり、そもそも論理の展開に追いつけない可能性があります。
そこでここに、**原始的信仰として神という「物事の因果関係の説明法則」**を入れると、論理の流れが簡潔になります。
その結果、
雷が鳴る→神が怒っている→避難し備えよ
というロジックになります。
原始的信仰を導入することで、疑問の余地をなくし、論理の展開を簡略化することができます。
これは最終的に相手の行動をコントロールするのに、少ないコミュニケーション内容で済むため、嬉しいです。
すなわち、原始的信仰の概念を導入することで、コミュニケーションが円滑になります。
原始的信仰から科学へ
現在のディープ・ニューラルネットワークは、その入出力関係を膨大なニューロンからなる関数として表します。
しかしディープラーニングには基本的には、学習内容を普遍化する仕組みは内部にはありません。
ここでの普遍化とは、物事の因果関係を概念の抽象度を上げて理解する知能の獲得を意味します。
ディープラーニングには、蒸留というテクニックがありますが、これはモデル規模を小さくするだけで、概念の抽象度を上げ、普遍化を試みるわけではありません。
例えば、物体の運動を考えてみましょう。
F=maのニュートン方程式を知らない人類や動物も、動く物体のふるまいを予想できます。
つまりヒトも犬も、投げられたボールがどこへ行くかを予想してキャッチすることはできます。
一方ヒトはその振る舞いをニュートン力学として普遍化した(概念の抽象度を上げた)ため、
ボールのキャッチに加えて、ロケットを月まで飛ばすこともできます。
こうした物事の物理法則・因果関係を、ホモ・サピエンスは最初は原始的信仰として、その後は宗教、そして科学として、集団の共通の虚構にしました。
ここまでのまとめ
少し難しい話になりましたが、ここまでの内容をまとめます。
自由エネルギー原理に従うと、ホモ・サピエンスは集団の生存可能性を最大化するために、外界を予測する内部モデルを脳内に学習するとともに、他者の行動を自分の予想の範囲内に留める必要がありました
そのためには円滑なコミュニケーション(少ない発話量で納得性が高い情報伝達)が重要となります
円滑なコミュニケーションを実現するには、複雑な物事の因果関係を簡潔に伝える必要があります
複雑な物事の因果関係を簡潔に伝えるためには、因果関係を普遍化(概念の抽象度を上げる)必要があります
ホモ・サピエンスの因果関係を普遍化する手法は、原始的信仰→宗教→科学と変遷してきました
ホモ・デウスよりもAI・デウス
ホモ・デウス
ここから、AIをより知的にする手法の解説に移ります。
現在の人工知能はただ入出力関係をうまく説明し、未知の入力にも出力を正しく予想できる大規模ネットワークを構築するだけです。
ここで目指す「知的なAI」とは、入出力関係の間にある法則を普遍化した概念である、科学法則として理解するAIです。
サピエンス全史の続編である「HOMO DEUS(ホモ・デウス)」(邦題未定)の日本語訳が9月に発売されます。
ホモ・デウスでは、技術の進歩によりヒトが神(デウス)的能力を持ったときの社会の様子が描かれています。
ですが私は、ヒトが神的能力を持つ前に、AIが神的存在を作ることの重要を考えています。
AI・デウスとビット神
マルチエージェントシステムのAIに対して、AIの生存可能性を報酬とし、その報酬最大化するように、内部モデルの学習と行動の最適化を強化学習させます。
ただし、エージェント間にコミュニケーション機能を持たせ、なおかつエージェントの発話機能に制限を持たせます。
このような条件下ではエージェントは生存に向けて円滑なコミュニケーションの実現が必要となります。
その結果、まず個々のエージェントは、集団内で外界の因果関係を説明する普遍化した共通概念を生み出します。
そして、その普遍化した概念をベースに必要な情報量だけを伝えれば、発話量が制限されていても、集団が統制できます。
このAIエージェントが共有する因果関係を普遍化した概念は、ある意味AIが生み出したAIの原始的信仰とも考えられます。
ここではAIエージェントが因果関係を一般化した共通概念をAIの生み出すデウスである「ビット神」と呼ぶことにします。
再度説明すると、各エージェントがこの「ビット神」を共通概念として内部モデルに学習し、かつ「ビット神」を前提としたコミュニケーションを行うことで、少ない発話量で多くの情報量を伝達できる、円滑なコミュニケーションが可能になり、個々のAIの生存可能性が上がります。
そして学習を続けていくうちに、AIマルチエージェントが共有するビット神は、神的存在から入出力関係の因果をより汎用的に説明できる科学へと進化します。
つまり「発話量を制限したマルチエージェントシステム」において、エージェントが円滑なコミュニケーション手法を獲得する過程で、独自に物理法則・科学法則を再発見・新発見し、外界の入出力関係の間にある法則を普遍化・一般化して理解するようになります。
AIに言語を理解させるには?
ですがこの段階では、AIはAI独自の世界観で知的さを獲得し、勝手にコミュニケーションするだけです。
まだ我々のヒトの虚構の世界(とくに言語の世界)にAIを招き入れることができていません。
最後にAIをヒトの言語という虚構の世界へ招き入れる必要があります。
すなわち、AIに言語を理解させ、発話できるようにする必要があります。
そのためにはどうすれば良いのか?
私の考える答えは、**「AIをヒトの虚構の世界へ取り込むために、マルチエージェントAIシステムにヒトを組み込む作戦」**です。
ヒトとAIが混合したマルチエージェントシステムでは、AIエージェントはその生存可能性最大化(報酬最大化)に向けて、ヒト・エージェントの言語を理解する内部モデルを獲得する必要があり、その結果言語を理解します。
また、ヒト・エージェントがAIエージェントの内部モデルから予想できない動きをしないように、ヒト・エージェントが理解できる言語を出力して、ヒト・エージェントの行動の予想不確実性を下げる必要があります。
その結果、言語を生成できるようになります。
このように、ヒトとAIのマルチエージェントシステムが、AIの言語理解のカギになります。
例えば、ヒトが外国語を学ぶときも、机の上で教科書を使用して学ぶよりも、実際に外国に住むことになりコミュニケーションしないと生活できず死んでしまう状況の方が、早期習得できます。
このように生存に向けた他者とのインタラクションが、真のコミュニケーションと、本質的言語理解につながると考えています。
そんなマルチエージェントシステムを作れるのか
ただの妄想物語なので、現実性は大切ではないのですが、そんなマルチエージェントシステムを学習させる場は存在するのでしょうか?
現在のマルチエージェントシステムを学習させる場としては、Dota2やStarcraft、Quake III Arenaなどのゲームが使われています。
ここでカギとなるのが、落合先生のデジタルネイチャーという概念です。
・デジタルネイチャー 生態系を為す汎神化した計算機による侘と寂
weblioよりデジタルネイチャーの解説
デジタルネイチャーを「人・モノ・自然・計算機・データが接続され脱構築された新しい自然」であると述べている。
成熟したコンピュータ技術により、あらゆるものがソースコードとして記述され、人や自然などの「物質」と仮想的に再現された「実質」(virtual)が不断の連続的な関係に置かれる、それによって、旧来の工業化社会とは違った世界の在り方、価値観、環境が実現するという。
要は、アナログの自然界であったこれまでの外界に対して、アナログを一度デジタルにして人間がinputしたり、デジタルデータとして、アナログと見間違うような生成物を外界に生成する世界です。
現状、ヒトの視覚と聴覚についてはデジタルネイチャー化に近づいています。
例えば、ヒトの発話を文字起こしする(アナログをデジタルとしてinput)、文字を発話するといったことがAIで可能になっています(デジタルをアナログとしてoutput)。
もちろん精度や違和感に問題はあり、まだまだヒトと同じレベルではありませんが、デジタルネイチャーに近づいた世界では、ヒトでなくてAIエージェントでも、ヒトと同じ世界を生きていくことが可能です。
Dota2やStarcraftのような場を用意しなくても、デジタルネイチャー化された現実世界そのものが、AIマルチエージェントシステムおよび、ヒト・AI混在型マルチエージェントシステムを学習させる場となりえます。
まとめ
以上の内容を簡潔にまとめます。
[目的]
・AIをより知的にしたい、知能を獲得させたい(物事の因果関係を普遍化して理解させたい)
・AIに本質的に言語を理解させたい
[手法]
AIの知能獲得に向けて
・マルチエージェントシステムにおいて、エージェント間の発話量に制限をかける
・自由エネルギー原理やそれに類するものに基づいた、モデルベース深層強化学習を実行する
AIの言語理解に向けて
・ヒトとAIが混在するマルチエージェントシステムを最適化させる
・デジタルネイチャー化した現実世界を、システムの学習の場に使用する
[結論]
・AIは因果関係を説明するために一般化した共通認識として「ビット神」を生み出す
・ビット神はより汎用的に物事の因果関係を説明できる科学を再発見・新発見する
・ヒトとAIが混在したマルチエージェントシステムでAIを学習させるとき、AIはその報酬最大化の過程でヒトの言語を理解・発話できるようになる
以上、最近考えたことを文字に起こしてみました。
穴だらけのただの妄想です。
深層強化学習を学ぶおすすめ本
最後にまじめな話題に戻します。
この先、機械学習エンジニアとして深層強化学習を理解し、その実装経験があるかないかの差は非常に大きいと思います。
深層強化学習のアルゴリズムはDQNが有名ですが、DQNはLSTMやGRUを使用できず、また学習時間も膨大になります。
現在の深層強化学習はDQNではなく、A3Cというアルゴリズムがベースとなっています。
このA3Cをベースとした、A2Cやその派生・発展版アルゴリズムが多く使われています。
なぜならA3Cベースの手法は学習が早いことに加えて、LSTMやGRUが使えるため、時間方向の関係性や予測を取り入れやすいからです。
そこで、A3CやA2Cを実装ベースで学べるおすすめの書籍を紹介します。
洋書2冊と和書1冊を紹介します。
3冊とも先月(2018年6月)に発刊されました。
この本はかなり網羅的で実装例も多いです。実装はPyTorchです。
深層強化学習の最新手法までの解説および実装例、そしてStocks Tradingの強化学習やChatbotの強化学習などの応用実装まで記載されています。
ただし、個々の説明は少し薄く、初心者がこの本にチャレンジすると挫折するかもしれません。
なおStocks Tradingの強化学習として、ロシアのYandex社の1分足で株価予測し、収益最大化になる強化学習エージェントを学習させています(結果としてはあまりうまくいっていません)。
その他洋書では、
・Hands-On Reinforcement Learning with Python: Master reinforcement and deep reinforcement learning using OpenAI Gym and TensorFlow
も参考になります。
こちらは、強化学習の応用先なども説明されていて面白い本です。
実装はTensorFlowです。
こちらの方が解説は丁寧です。
日本語では、拙著
・「つくりながら学ぶ! 深層強化学習 ~PyTorchによる実践プログラミング~」
がおすすめです(自分で書いた本の宣伝をするのは微妙な感じですが)。
この記事とは異なり、きちんとした技術書です。
本書では、実装環境として
・初めはTry Jupyter(もしくはGoogle Colarboartory)
・次に自分のローカルマシンでAnaconda
・最後にAWSのGPUインスタンスを使用してディープラーニングや深層強化学習を実行する環境構築
を解説しています。
深層強化学習のアルゴリズムとしては、
・テーブル表現の強化学習で迷路を解く
・テーブル表現の強化学習でCartPoleを制御
・PyTorchの使い方
・DQNでCartPoleを制御
・DQNの発展形としてDouble-DQN、Dueling Network、A2Cなどを実装
・最後にブロック崩しをA2Cで実装
といったことを解説しています。
最終的には以下の動画が生成できます。
これはAWSのGPU1枚のインスタンス(約100円/h)で3時間学習した後の様子です
自分で本屋で立ち読みしてみると、「なんて難しそうな本なんだ・・・」と自分で挫折しそうになったのですが、じっくり読んでみると、分かりやすい(はずです・・・)
最後に
もはや、深層強化学習ビジネスを考えたいのか、妄想したいのか、本の紹介をしたいのか、わけのわからない記事になりましたが、最近の私の頭の中を言語化してみました。
もしここまでこの記事を読んでくださった方がいましたら、感謝の気持ちでいっぱいです。
ありがとうございました!!