最近の自然言語生成 将棋解説文生成kameko/slide/tokyocl...最近の自然言語生成...

38
2016/05/11 亀甲博貴 [email protected] 最近の自然言語生成 & 将棋解説文生成

Upload: others

Post on 21-May-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

2016/05/11

亀甲博貴[email protected]

最近の自然言語生成&

将棋解説文生成

自己紹介

亀甲 博貴(Hirotaka KAMEKO)

http://www.logos.t.u-tokyo.ac.jp/~kameko/

東大鶴岡研D2

•自然言語処理

•ゲームAI•やることは同じ(評価と探索)

/ 3822016/05/11 TokyoCL #04

今日のテーマ

•最近の自然言語生成

•将棋解説文の生成

2016/05/11 TokyoCL #04 / 383

最近の自然言語生成

• Image Captioningが大流行• Captioning Challenge @ CVPR 2015

• Video description

•その他多様なデータ

2016/05/11 TokyoCL #04 / 384

The man at bat

readies to swing at

the pitch while the

umpire looks on

A large bus

sitting next to a

very tall building

生成のアプローチ

•定型文

•テンプレート

•文法ベース

•言語モデルベース• 𝑛 − gram言語モデル

• RNN言語モデル

2016/05/11 TokyoCL #04 / 385

RNNベースの自然言語生成

2016/05/11 TokyoCL #04 / 386

RN

N

うまいエンコード(ドメイン依存)

RN

N

RN

N

Attention

Softmax Softmax Softmax

RNNベースのXXXX

2016/05/11 TokyoCL #04 / 387

RN

N

うまいエンコード(ドメイン依存)

RN

N

RN

N

Attention

Softmax Softmax Softmax

徳永さん@TokyoCL#03

菊池さん@NLP-DL勉強会#02

今日の話のメイン

Image Captioning

•画像キャプション• The Flickr 8k Dataset [Hodosh et al., 2013]

• Microsoft COCO Captions [Lin et al., 2014]

• webから集めてきた画像

• 人手(AMTなど)で複数のキャプションを付与

2016/05/11 TokyoCL #04 / 388

画像・動画データセットリスト

http://qiita.com/hiso-as/items/1d616adfb7560ff5b11a

Show and Tell: A Neural Image Caption Generator[Vinyals et al., 2015]

2016/05/11 TokyoCL #04 / 389

画像をCNN(GoogLeNet [Szegedy

et al., 2014]+BN[Ioffe et al., 2015])で

Embedding• ImageNetデータセットでpre-

training画像のベクタをEmbeddingされた単語の代わりに入力

Show, Attend and Tell: Neural Image Caption Generation with Visual Attention[Xu et al., 2015]

2016/05/11 TokyoCL #04 / 3810

画像をCNN(VGGnet [Simonyan et

al., 2014])でEmbedding

• ImageNetデータセットでpre-

training画像のベクタをEmbeddingされた単語の代わりに入力

Video Description

•動画(の一部)説明文• Microsoft Research Video Description

Corpus [Chen and Dolan, 2011]

• YouTubeの動画を人手で区切り説明文を付与

他多数

2016/05/11 TokyoCL #04 / 3811

画像・動画データセットリスト

http://qiita.com/hiso-as/items/1d616adfb7560ff5b11a

aeA-HN7BMdo,34,41,807872,clean,18,English,

A woman cuts up broccoli.

開始時間・終了時間

Translating Videos to Natural LanguageUsing Deep Recurrent Neural Networks [Venugopalan et al., 2015]

2016/05/11 TokyoCL #04 / 3812

サンプリングされたフレームをCNN(AlexNet)で

Embedding全フレームで平均化LSTMの1層目に毎回入力

RNNでの動画のEncoding

2016/05/11 TokyoCL #04 / 3813

Video Description using Bidirectional

Recurrent Neural Networks

[Peris et al., 2016]

Improving LSTM-based Video Description

with Linguistic Knowledge Mined from Text

[Venugopalan et al., 2016]

Semantically Conditioned LSTM-based Natural Language Generation for Spoken Dialogue Systems[Wen et al., 2015]

2016/05/11 TokyoCL #04 / 3814

DA用LSTMとユニットを用意

対話システムの応答文生成入力:Dialogue Act (DA)

e.g. (area=cathedral, kids=no)出力:応答文

与えられたDAに対して適切な応答文を人手で付与し教師に

まとめ

•対象とする状態と対応するテキスト•質の高い教師データを人手で作成

•強力なモデルでエンコーディング•画像/動画に対するCNN

• RNNによってテキスト生成

2016/05/11 TokyoCL #04 / 3815

今日のテーマ

•最近の自然言語生成

•将棋解説文の生成

2016/05/11 TokyoCL #04 / 3816

ゲームAIの現状

•囲碁:人間より強い• AlphaGo (1,202 CPUs + 176 GPUs) > 人間トップ

•将棋:人間より強い• ponanza (市販PC1台) > 人間プロ

(ルールが明快な)ゲームは人間よりコンピュータが既に賢い

2016/05/11 TokyoCL #04 / 3817

強いAIによる解説の需要

•ヤン・ゴン9段(棋士会長) もし2局でも負けるとAlphaGoの自戦解説を聞きたいという話が出るかも知れない。http://nitro15.ldblog.jp/archives/47050714.html (囲碁ニュースの翻訳記事)

元ソースは(読めないので)不明

2016/05/11 TokyoCL #04 / 3818

一家に一台AlphaGo(1,200 CPUs+176GPUs)

強いAIによる解説の需要

•ヤン・ゴン9段(棋士会長) もし2局でも負けるとAlphaGoの自戦解説を聞きたいという話が出るかも知れない。http://nitro15.ldblog.jp/archives/47050714.html (囲碁ニュースの翻訳記事)

元ソースは(読めないので)不明

2016/05/11 TokyoCL #04 / 3819

一家に一台強い将棋プログラム

コメントデータ

• 名人戦・順位戦の棋譜 http://www.meijinsen.jp• (ほぼ)全棋士参加

• 2003年から棋譜をweb配信

• 人間がコメントを付けている

• 8,397棋譜 / 475,392コメント (2016/03/02)

• 収集スクリプトhttps://github.com/hkmk/shogi-comment-tools

• 単語分割KyTeaをアノテーションした将棋コメントで学習

http://plata.ar.media.kyoto-u.ac.jp/data/game/home.html

2016/05/11 TokyoCL #04 / 3820

データ例(第69期名人戦七番勝負第1局)

(ヘッダ)

手数----指手--

*過去の対戦成績は羽生58勝、森内44勝。

*振り駒の結果、と金が4枚出て森内の先手に決まった。

*(棋譜・コメント入力=銀杏)

1 7六歩(77) ( 0:00/00:00:00)

*羽生は目を閉じ、駒音に耳を澄ませていた。

2 3四歩(33) ( 0:00/00:00:00)

*羽生の2手目は△3四歩。横歩取りや1手損角換わり志向の出だし。

3 2六歩(27) ( 0:00/00:00:00)

*現在、BSプレミアムでテレビ中継が行われている。

2016/05/11 TokyoCL #04 / 3821

データ例(第69期名人戦七番勝負第1局)

(ヘッダ)

手数----指手--

*過去の対戦成績は羽生58勝、森内44勝。

*振り駒の結果、と金が4枚出て森内の先手に決まった。

*(棋譜・コメント入力=銀杏)

1 7六歩(77) ( 0:00/00:00:00)

*羽生は目を閉じ、駒音に耳を澄ませていた。

2 3四歩(33) ( 0:00/00:00:00)

*羽生の2手目は△3四歩。横歩取りや1手損角換わり志向の出だし。

3 2六歩(27) ( 0:00/00:00:00)

*現在、BSプレミアムでテレビ中継が行われている。

2016/05/11 TokyoCL #04 / 3822

こういうコメントを出したい

こういうコメントはどうでもいい

タスクの難しさ

2016/05/11 TokyoCL #04 / 3823

△1四玉なら▲3五飛成が好手という。以下△同馬▲同角△3六飛▲4三角で△3五飛は▲2六金と押さえる。

タスクの難しさ

2016/05/11 TokyoCL #04 / 3824

△1四玉なら▲3五飛成が好手という。以下△同馬▲同角△3六飛▲4三角で△3五飛は▲2六金と押さえる。

△1四玉▲3五飛成△同馬▲同角

△3六飛▲4三角△3五飛▲2六金

学習時:状態とテキストの正確な対応付け生成時:対象局面を動的に変更(今後の課題)

タスクの難しさ

2016/05/11 TokyoCL #04 / 3825

△1四玉なら▲3五飛成が好手という。以下△同馬▲同角△3六飛▲4三角で△3五飛は▲2六金と押さえる。

△1四玉▲3五飛成△同馬▲同角

△3六飛▲4三角△3五飛▲2六金

将棋の局面遷移は基本的にある記法(符号)に従う• プレイヤ+座標+種類+α符号に則っていないものは今回は無視

解説木

▲8六歩

△同飛

▲3四飛

△7六飛

▲2二角成

▲8七歩

△8五飛

▲2六飛

△2五飛

▲2八歩

▲Pass

合法手を繋げた木解説木

ここで△7六飛のマネ将棋は▲2二角成に取る駒がなく、終わってしまう。

解説文

△2五飛と回られては▲2八歩と使わされてしまう。

解説文

狙いの解説のためパスも必要

現在の状態

1手前

解説木が作れる⊂将棋に関係するというおまけ付き2016/05/11 TokyoCL #04 / 3826

解説木の生成

•候補の列挙•将棋のルールと照らし合わせながら

•多少のヒューリスティクス

•適切な木の選択•コンピュータプレイヤの評価

• 解説中にめちゃくちゃな手(悪手)はあまり出てこない

2016/05/11 TokyoCL #04 / 3827

候補木

/ 38

棋譜

⋮▲3六飛△2二銀▲8七歩△8五飛

▲2六飛⋮

▲8七歩

△8五飛

▲2六飛

△2五飛

▲Pass

▲8七歩

△8五飛

▲2六飛

▲8七歩

△8五飛

▲2六飛

△2五飛

▲8七歩

△8五飛

▲2六飛

△2五飛

▲2八歩

▲8七歩

△8五飛

▲2六飛

△2五飛

▲2八歩

▲Pass

候補木1

候補木2

▲8七歩

△8五飛

▲2六飛

△2五飛

開始状態

解説木になりうる木候補木

候補木の列挙解説木の選択

△2五飛と回られては▲2八歩と使わされてしまう。

解説文

282016/05/11 TokyoCL #04

悪手の判別

2016/05/11 TokyoCL #04 / 3829

20

5

10 5 10035 -1000 355020

20 -1000

局面の評価高いほど自分有利低いほど相手有利

MINノード相手はなるべく低い局面を選ぶ

MAXノード自分はなるべく高い局面を選ぶ

手の決定:Min-Max探索局面評価+木探索

悪手の判別

/ 3830

20

5

10 5 10035 -1000 355020

20 -1000

最善手 悪手

ルート局面評価値:20

最善手局面評価値:20 悪手局面評価値:-1000

大幅ダウン

指し手前後の評価値変動幅=指し手の悪手度を基準に解説木選択

木全体の悪手度が低い候補木

2016/05/11 TokyoCL #04

文生成への適用

2016/05/11 TokyoCL #04 / 3831

△同飛

▲8三角

△7一飛

▲7二歩

△6四飛

として、飛車を活用しやすいように逃げる。

△同飛▲8三角に△6四飛として、飛車を活用しやすいように逃げる手も有力だ。~~

解説文入力:テキストの直前の符号に対応する局面+指し手

生成モデル

2016/05/11 TokyoCL #04 / 3832

(1, 0, 0, 0.5, ........., 0, 0, 0)

LSTM

LSTM

LSTMEmbedding

vector

人間より強いプレイヤが実現できている素性の表現力は十分では?

素性へのアテンション

𝑝 𝑦𝑖 𝑦1, … 𝑦𝑖−1, 𝑥 = 𝑔(ℎ𝑖 , 𝑐𝑖)𝑐𝑖 = ∑𝛼𝑖𝑗𝑓𝑗

𝛼𝑖𝑗 =exp 𝑒𝑖𝑗

exp∑ 𝑒𝑖𝑘𝑒𝑖𝑗 = ℎ𝑖𝑓𝑗

𝑥: 対象局面 𝑦𝑖: 𝑖番目の単語

ℎ𝑖: LSTMの隠れ層 𝑐𝑖: context vector

𝑓𝑗 : 将棋の各素性に対応するembedding vector

2016/05/11 TokyoCL #04 / 3833

学習データ

•入力:将棋ソフト「激指」が用いる素性•トップレベルの強さ

•線形和で局面や指し手を評価• 駒の組み合わせなど

•約300,000次元

•出力:コメント•約10,000次元

•約60,000文

2016/05/11 TokyoCL #04 / 3834

学習設定

• 50次元• スケジューリング:SGD

• 学習率:目視で色々

• Gradient Clipping• 途中で変更しつつ

• ミニバッチ学習(𝑏𝑎𝑡𝑐ℎ𝑠𝑖𝑧𝑒 = 24)

ユニットの実装:https://github.com/hassyGo/N3LP をベースに

C++/EigenでのLSTM実装(橋本@NLP-DL勉強会#03)

http://www.logos.t.u-tokyo.ac.jp/~hassy/publications/talk/pfi_dl2016/slides.pdf

2016/05/11 TokyoCL #04 / 3835

生成例

•第1期電王戦第1局• http://denou.jp/2016/kifu/20160409.html

•先手:ponanza(コンピュータ)

•後手:山崎隆之叡王

•貪欲法による生成

2016/05/11 TokyoCL #04 / 3836

問題点

•時制の不一致•現局面と学習局面の関係を考慮していない

•同じ内容の繰り返し•各局面ごとに独立に生成

•探索結果に基づく解説はできない•勝ち負け etc.

2016/05/11 TokyoCL #04 / 3837

まとめ

•将棋の状態とテキストの正確な対応付け•将棋のルールと将棋プログラムの探索結果に基づいて自動で解釈

•局面・テキストペアで言語モデルを学習•対象局面の素性のみから実況程度の発話•より高度な発話のためにはより広い範囲を見る必要アリ

2016/05/11 TokyoCL #04 / 3838