xgboostでは欠損が入った文字の扱いが難しい

ランニングできず 英語できず

(1) やっとPython版のxgboostが実行できた。R版は2,3日で実行できたが、Python版は参照できるサイトが少なく、自分でプログラムを作成する必要があった。悩んだのは以下の点

・xgboostが数値しか受け付けない

・データにコードの場合は、oneHotでダミー変数を作成する必要がある。

 コードに大小関係の意味を持たせないためである。

testpy.hatenablog.com

 

・文字変数が多数あり、これらを一挙に数値にエンコードにする必要がある

エンコードにはsklearnのlabelEncoderを使ったが、これが欠損だと変換しない

というわけで、欠損の場合空白に補填してから数値にエンコードした。

from sklearn import  proc

trans=proc.labelEncoder

   for j in range(data.columns):

      if(data.ix[:,j].dtype == 'object') :

          data.ix[:,j] = trans.transform(data.ix[:,j].fillna(' '))

 

DeepMindのNeural Turing Machineの解説が楽しみ

テニス2時間 英語できず

(1) Programmable Agentを引き続き読む。明示的な特徴量を抽出してRLで解く方式は

一般的であるが、これをプログラムとして一般化する理屈は誤植もあり説明が理解できていない。

(2) 明後日に T研の機械学習ゼミでM先生がDeepMindの「Neural Turing Machine」の解説をするので、この論文に基づきNatureに発表されたDNC(Deep Neural Conputer)を再度読む。幾ら読んでも本当に適切な解が求まるか不思議に思っていたが、M先生によると皆本当の意味がわかっていないとのことである。

 

DeepMindのProgramable Agentを読む

テニス・ランニング2時間 英語 30分 Bone Idendity

(1) SNSからの情報で、DeepMindの下記論文を読み始める。

https://arxiv.org/abs/1706.06383

DeepMindの3D世界の自然言語理解については、One-Shot学習で敵対的学習や転移学習の一般化や拡張する理解が行われていない。この論文では強化学習でロジックを一般的に生成する事を目指しており、こちらはZero-Shotを使った敵対関係に類似したモデルで構成されている。

 Verifier ⇔ search procedure

 

 

DeepMindが自然言語理解の2難題を解決した

ランニングできず 英語30分 The Boune Leagacy

(1) DeepMindの自然言語を理解するUNREALモデルの論文を読み、深い感動を覚える。

 このモデルは自然言語理解に於ける2つの懸案事項を解決している。

 ・計算機が言語を教える事を可能にした。

  言語理解で正解すれば計算機がエージェントに報酬を与えることで、

  数十万の繰り返し学習を可能にした。従来は人間が計算機に教えるしかなく、

  試行回数の壁があった。

 ・複雑な文章理解では、単純な文章学習を経ていけば可能になることを実証した

f:id:mabonki0725:20170708132436p:plain

 

 DeepMindの証明したかったことは以上の3点である

 ・言語理解を解明するには、人間の環境に似た3要素の模擬環境が必要

   ・動作できるエージェント

   ・エージェントが存在する3D環境

   ・報酬と罰則

 ・言語学習には相当な繰り返しが必要

 ・複雑理解では適切な学習手順が必要

f:id:mabonki0725:20170707084319p:plain

 

 

  

DeepMindのUNREALの自然言語理解

ランニングできず 英語30分

(1) DeepMind UNREALでの自然言語理解の論文を読む

Grounded Language Learning in a Simulated 3D World | DeepMind

これは迷路ゲームの中に報酬が複数ある。

   a)報酬の取り方の順序を自然言語で与える。

   b)実際にその順番で報酬を取る操作を行う。

上記を様々な表現で多数回行うと、除々に自然言語を理解し始め、自然言語を与えるだけでその指示に従うことができる。

下の図は「赤の物体を取り緑の物体を取れ」と指示すると実際に動作した画面である

f:id:mabonki0725:20170707084319p:plain

下図は自然言語理解のモデル図で中央のMが実際の動作と自然言語を結び付けて学習する。

f:id:mabonki0725:20170707085001p:plain

 

DeepMindのUNREALでの暗黙の特徴量

ランニング30分 英語:How the West Won

(1) Deep MindのUNREALを読む。このモデルは迷宮(Labyrinth)Gameを対象としているので、コーナを曲がると別画面になるため、直接に画像から特徴量を抽出するDQNモデルは1部しか使えない。

このモデルでは、様々な暗黙的な特徴量を仮想報酬の計算に使っており、暗黙の特徴量の抽出理論に大きな示唆を与えている。

 

損失関数はA3Cの損失関数と補助損失関数を合算したものになっている。

{\mathcal{L}_{UNRAEL}(\theta) = \mathcal{L}_{A3C} +\lambda_{VR} \mathcal{L}_{VR}+\lambda_{PC} \sum_c \mathcal{L}_Q^{(c)} + \lambda_{RP} \mathcal{L}_{RP}}

 

(下記の(a)~(d)は下図の項目に対応している)

(a) A3C(Asynchronous Advantage Actor-Critic):並列型のブースティングで解く

 CNN+LSTMで構成されており、方策({\pi(\theta)})とQ関数[Q(s,a)]を解く

(b) PC(Pixel Control):画面変化を仮想報酬としている

 報酬がある画面の出現が希である場合、画面の変化が多い行動を報酬とする。

 これはDeepMindが提唱する仮想回数を特徴量とするもので、この場合

 DeConvolutionで画面を荒くして抽出が容易にしている

(c) RP(Reword Prediction):報酬予測

   価値関数に似ているが、これはモデルを安定化するためである。数画面前の

 画像から次の画面での報酬を予測するが、この予測は2値(報酬有無)と荒い予測

 である。これは人間が報酬を獲得した場面を長く記憶に残す事を真似している。

(d) VR(Value Replay):再現場面の学習

 詳細な記述は無いが、過去の同じ場面に近ければ、計算結果を再利用して高速化を

 計っている

この損失関数の最適化では、下図の中央にあるReplay Bufferで直近の画面を様々なパラメータ別に保存して、古い画面でのでの学習を避けて安定化と高速化を実現している

 

f:id:mabonki0725:20170706085235p:plain

 

 

DeepMindのUNREALを再度読む

ランニング30分  英語できず

(1) データからベイジアンネット生成による特徴量は、データ項目が十分あり、そこからネットを構成するノードに限定できたものとなる。データ項目に含まれない場合、認識できない。逆強化学習も十分な特徴量を構成できるデータ項目が必要である。

別の特徴量の抽出方法の検討のため、一旦離れてDeepMindのUREALの後続版である、3D世界の言語認識の論文が話題になっていたので、これに注目する。

https://arxiv.org/abs/1706.06551

そのため、再度UNREALを読み始める。プログラムが公開されており、特徴量に対する一般的でかつ秀逸な分析が盛り込んであり、次回のAI論文の解説として纏めたい。

Reinforcement learning with unsupervised auxiliary tasks | DeepMind

 

 

f:id:mabonki0725:20170705141022p:plain