MagicHaskeller-based Incrementally Learning Agent General AI Challengeに参加して

Susumu Katayama 片山 晋

August, 2018 2018年8月

Organization of this presentation目次

Organization of this presentation目次

(私の考える)汎用知能

俺アプローチ

大人レベルの汎用人工知能
効率無視で最大限に汎用的な人工知能
スキルをどんどん学習(インクリメンタル学習)
((プログラム/行動(behavior)を)探索 =
広く浅く探索 + 有望なところを掘り下げる)

Organization of this presentation目次

AIXI: An "Ideal" General AI (Reinforcement Learning) Agent AIXI: "理想的"汎用人工知能(強化学習)エージェント

`ideal' means... "理想的"とは... アルゴリズム:
  1. model the environment as a program :: History → (Observation, Reward)
    where History = [(Action, Observation, Reward)]
    環境を
    program : History → Perception
    としてモデル化
    ただし、
    History = (Action × Perception)*,   Perception = Observation × Reward
  2. enumerate all the programs consistent with the history,
    assigning big weight (belief) to short programs
    Historyと矛盾しない全てのprogramを列挙
    より短いprogramにより多い荷重(信念)
  3. compute the value (expected return) of each action 各Actionの価値(期待報酬)を計算
  4. execute the action that maximizes the value 価値関数を最大化するActionを実行

AIXIが計算できない理由

  1. Turing機械のプログラムとして環境を推定 --- 停止しないことがある
  2. 無数にあるプログラム候補を考慮 --- 無限級数を計算
  3. すべて実数値上の計算 --- 無限桁

Unlimited Computable AI (UCAI): "The" Computable AIXI variant AIXIの計算可能な改変

UCAI (Katayama 2018, arXiv): アルゴリズム:(AIXIと同じ)
  1. model the environment as a program :: History → (Observation, Reward)
    where History = [(Action, Observation, Reward)]
    環境を
    program : History → Perception
    としてモデル化
    ただし、
    History = (Action × Perception)*,   Perception = Observation × Reward
  2. enumerate all the programs consistent with the history,
    assigning big weight (belief) to short programs
    Historyと矛盾しない全てのprogramを列挙
    より短いprogramにより多い荷重(信念)
  3. compute the value (expected return) of each action 各Actionの価値(期待報酬)を計算
  4. execute the action that maximizes the value 価値関数を最大化するActionを実行

実装

アルゴリズム:(先ほどと同じ)
  1. model the environment as a program :: History → (Observation, Reward)
    where History = [(Action, Observation, Reward)]
    環境を
    program : History → Perception
    としてモデル化
    ただし、
    History = (Action × Perception)*,   Perception = Observation × Reward
  2. enumerate all the programs consistent with the history,
    assigning big weight (belief) to short programs
    Historyと矛盾しない全てのprogramを列挙
    より短いprogramにより多い荷重(信念)
  3. compute the value (expected return) of each action 各Actionの価値(期待報酬)を計算
  4. execute the action that maximizes the value 価値関数を最大化するActionを実行

実装

アルゴリズム:(先ほどと同じ)
  1. model the environment as a program :: History → (Observation, Reward)
    where History = [(Action, Observation, Reward)]
    環境を
    program : History → Perception
    としてモデル化
    ただし、
    History = (Action × Perception)*,   Perception = Observation × Reward
  2. enumerate all the programs consistent with the history, Historyと矛盾しない全てのprogramを列挙
    • ここが大変
    • 既に実装したものがある!

    assigning big weight (belief) to short programs より短いprogramにより多い荷重(信念)
  3. compute the value (expected return) of each action 各Actionの価値(期待報酬)を計算
  4. execute the action that maximizes the value 価値関数を最大化するActionを実行

MagicHaskellerによる実装

MagicHaskeller: Inductive functional programming system / library based on generate-and-test MagicHaskeller:
生成テスト法による, 曖昧な仕様からの自動プログラミングシステム/ライブラリ
(AIXIとは独立に開発)

MagicHaskellerの実装

it just enumerates all valid programs and then tests against the spec. ライブラリ(予め定めた集合)にあるプリミティブを組み合わせて作れる、型にあったプログラムを全て列挙して、仕様に合致しているかテスト

MagicHaskellerの特徴

Organization of this presentation目次

Incremental Learning インクリメンタル学習とは

既に学習した結果を利用して、学習を深化

Example: learning to calculate 例: 計算を学習
Learning to calculate

Incremental Learning as Search 探索アルゴリズムとしてのインクリメンタル学習

Search for programs with a good balance of exploration / exploitation
like importance sampling over programs
プログラム上のimportance samplingのように、
explorationとexploitationのバランスをとりつつ探索
exploration:
by breadth-first search where depth = prog length 深さ = プログラム長 な幅優先探索で
(the default behavior of MagicHaskeller!) (MagicHaskellerのデフォルトの挙動!)
exploitation:
search deeper around promising regions (using desired compound functions as primitives) (望ましい複雑な関数をライブラリに含めることで)
有望な領域の周囲を深く探索
The neighborhood: 近傍:
programs using the same library set, or 同じライブラリを使うプログラム
programs sharing more compound subexpressions (or library functions) より多くの複雑な部分式(or プリミティブ、ライブラリ関数)を共有するプログラム

Learning Programs/Behaviors Incrementally プログラム/行動のインクリメンタル学習

Incremental learning cycle インクリメンタル学習のサイクル

skill = expression in the library (= primitive) スキル = (その時々のライブラリにある)プリミティブ

Instincts and learned skills 本能と獲得スキル

Instincts and Learned Skills 本能,獲得スキル

When talking about incremental learning of programs/behaviors, プログラム/行動のインクリメンタル学習に関して
inctinct本能
expression in the initial library (set of primitives) 最初のライブラリにある式
learned skill 獲得スキル
expression not in the initial library but in the current library 最初のライブラリにはないが現在のライブラリにある式
Instincts and learned skills

複雑な仕組み(知覚関係とか、深層学習が得意な処理を含め)を本能として組み込める!

The implementation this time (for General AI Challenge) did not require unregistering expressions from the library, so 今回の(General AI Challenge第1回向けの)実装はライブラリ中の式を除去する必要なし

The implemented instincts and learned skills

Organization of this presentation目次

Organization of this presentation目次

Objective of the ChallengeChallenge第1回の目的

To build an agent that ようなエージェントを作ること
(First Round Specification)

要はインクリメンタル学習!

Environment環境

Just see....

経緯

オフィシャルな日程:
Announcement & start アナウンス & 開始
Feb. 15, 2017 2017年2月15日
Deadline 締め切り
Aug. 14, 2017 2017年8月14日(半年後)
Results announcement 結果発表
Sep. 30, 2017 2017年9月30日
私の場合:
2017年2月17日
DagstuhlやらAGI Conferenceやらで付き合いのあるJose Hernandez-Orallo (AGIの評価を主に研究)から,
「こんなのあるよ! シンボリックな課題だし,AGI2016でMagicHaskellerベースのRLエージェントの話してたしどうよ?」
とのメール
Specificationを読んですぐ参戦を決定
4月18日
MagicHaskellerをインクリメンタル学習対応に更新(公開は8月6日)
7月7日
こども園送迎中に左足捻挫,昔骨折した箇所で,全治2ヶ月と言われる
8月15日
お盆休みをほぼ返上して締め切りギリギリ解をアップロード.
妻子は実家へ(お盆なので)
(9月8日
テニス中に右足骨折)
9月18日-20日
アルゴリズムをDagstuhlで発表.(JoseはMSR訪問中で欠席)
9月30日
結果発表

Organization of this presentation目次

MagicHaskeller Agent

This time, for General AI Challenge, 今回は,Genreral AI Challengeにあわせて MagicHaskellerのインクリメンタル学習対応を除き、実装したのは(コメント含め)750行足らず。

The Learning Cycle 学習サイクル

skills ← instinct
forever {
}




































Hint: Push 'k' key in order to prevent advancing to the next slide on click.

My Strategy 本能選択における今回の戦略

Instincts 本能

TargetFunctionType =

Organization of this presentation目次

Results 結果

expected最初の期待
Could solve around string-manipulation tasks up to Micro 12 task 例題のMicro 12 taskまでの文字列操作タスクぐらいまでは余裕
actual実際のところ
Stuck at Micro 7.2 task Micro 7.2 taskでつまずく
where just picking up the last word of the input string 単に入力文字列の最初の単語を捨てる
(\_ _ inputString → dropUntilEq ' ' inputString)
will do. で十分なはずだが...
reason理由
trapped by another answer picking up the last word of what the assoc memory returns. 連想記憶が返す最初の単語を捨てる、というもう一つの解
(\_ whatTheAssocMemoryReturns _ → dropUntilEq ' ' whatTheAssocMemoryReturns)
which is also a right answer, but requires waiting for filling up the assoc memory. (間違いではないが、連想記憶が埋まるまで待つ必要がある) にトラップされる
連想記憶が埋まる前にtask instance switch

Reflections反省

終わりに/General AI Challengeについて思うこと