ZOZO SUIT 後の世界に起こること - 副作用編

思いついたら追記していく or コメント下さい。

  • Amazon が似たようなことをやる。
  • 中高生が結果を見せあって盛り上げる。「おまえ足短っ!」とか。
  • 筋トレクラスタが盛り上がる。
  • ダイエットクラスタが盛り上がる。
  • 夫婦間でも結果を見せ合うのに躊躇する。
  • ハロウィンで ZOZO SUIT 勢が現れる。
  • 芸能人の採寸が高値で取引される。 by 匿名さん
  • ZOZO suitを切ってであるくやつが発生。採寸スーツなのに。by id:asbjom
  • スマホカメラで測定できるようになって、スーツがゴミになる。 by id:isawo81
  • Amazonが電撃買収。 by id:mongrelP
  • ボディサイズという新手の個人情報漏洩が見られるのもそう遠い未来じゃないかもしれない。 by id:nakakzs
  • 気になる人のデータから人形を作って抱き枕にする(´・_・`)がっきーのデータとか高く売れそう by id:mutinomuti
  • アマゾンが真似するなら、体重とか血圧とかも計測して、サプリメントとかを売りつけるだろうな by id:goldenangel
  • お父さんが寝巻きがわりに使ってゴムだるんだるんになり、ちゃんと採寸できなくなる。 by id:tsunmatsu
  • ライザップが相乗りしてくる by id:wow64

Deep Reinforcement Learning for Dialogue Generation を読む(まだ途中)

Abstract

seq2seq は良いのだけど未来の会話の方向性を無視した近視眼的な output を出しがち。future reward をモデル化することで良いゴールを達成するよ。
モデルは2人の virtual agent をシミュレートする。vitual agents は policy gradient mothods を使って良い sequence がでるように reward を与えられる。

Intorduciton

seq2seq はすごく良いけど2つの問題点がある。
(1) maximum-likelihood estimation (MLE) objective function 使っているけど。これが人間相手の会話で一番良い方法かわからないよえ。会話長く続くとは限らないよね。
具体的な例としては seq2seq はすごく generic な返事をしがち。I don't know とか。(筆者注:これは僕の chatbot でも起こっていて問題視している)

(2) 無限ループに入るパターンがあること。
例)
A: Where are you going?
B: I’m going to the restroom.
A: See you later.
B: See you later.
A: See you later.
B: See you later.
これも MLE base だから起きること

というわけなので以下の2点の改善ができそう。
(X) chatbot の真の目的を reward として定義できる (MLE ではなく)
(Y) generic response が long term でどういう影響をあたえるのかモデリングする

これらを実現するために seq2seq を backbone として、2人の virtual agent が可能性のある返信を模索しつつ予想される reward を最大化するように動作する。
我々の良い会話の定義は

  • 将来を考慮している(forward-looking)
  • 会話のキャッチボールが続く(interactive)
  • 首尾一貫としている(coherent)

2. Related work

省略

3 Reinforcement Learning for Open-Domain Dialogue

2人の agent。p, q それぞれ first/second agent から生成された文を指す。agent 達は順番に会話をする。対話は p1, q1, p2, q2, ... のように表現される。ネットワークのパラメータは 4.3 で定義される policy search を利用して future reward が最大化されるように最適化される。

コンポーネント

3.1 Action

: 対話の1つの文が生成されたことを action と呼ぶ

3.2 State

1つ前の対話の pair [pi, qi] のこと。対話の履歴は pi と qi をくっつけて LSTM encoder にぶっこんで vector representation に変換される

3.3 Policy

LSTM encoder-decoder でそのパラメータによって定義される。

3.4 Reward:

r で表す。r はそれぞれの action で得られた reward である。計算可能で良い会話につながる reward function の major factor は


Ease of answering
machine で生成された答えは easy to answer であるべき。ease of answering を measure するには -log(単調な返事を返す確率)
単調な返事のセット S を手作業で用意する。(例) I have no idea.
単調な返事は手作業のセットよりもたくさんあるが vector space 的には近いところにあるはずなので OK 。
実際の式は論文参照


Information Flow
Agent が新しい話題を提供するほうが望ましいので、1つの agent からの幾つかの返事が意味的に似たものになることに対してペナルティを課すことを提案する。cosine similarlity を使うよと。

4 Simulation

4.1 supervised learning

seq2seq model を 80M データで学習せる。1つ前と2つ前の文をつなげて source input とした。

4.2 Mutual information

別論文読む必要あり。

4.3 Dialgoe Simulation

2人の agent が会話するようにシミュレート。最大 5 turn まで試す。

Chatbot と beam search

seq2seq で decoder から出力するときに beam search の方が出現確率が高いモノを選べるので結果が良くなるはず。beam search の詳細は karino2氏の解説。beam search 自体はシンプルで理解しやすいアルゴリズムなのだけど、Tensorflow のグラフでこれを書くのは非常に難易度が高い。使っている seq2seq library には loop_function という引数があってこれで一つ前の input を横取りしてあれこれできる。ということでずっとコードリーディングしてたんだがそれでも難しい。ということで試行錯誤しているうちに他の人が実装しているのを見つけてようやく動いた。 beam search のほうが結果が良いのかいまいち分からない。

>おはよう
normal:おはようございます
beam
0 おはよう ござい ます
1 お は あり
2 お は あり です 〜 ♪

>こんにちは
normal:はい(˘ω˘)
beam
0 はい ( ˘ ω ˘ )
1 はい ( ˘ ω ˘ ) スヤァ
2 はい ( ˙ㅿ˙ 。 .
3 はい ♡
4 はい ( ´ ω 。
5 はい 、 さ www
6 はい ( 笑

>ばいばいー
わろきちってんじゃんwww
normal:beam
0 がち やし ま ー ん
1 いや ま ー !
2 わろ ぶ や !
3 ほら
4 ネタ やし ぶ
5 ど ま ー
6 がち やし ま ーー
7 いつの間に ま ー
8 す
9 いつの間に ぶ
10 いつの間に やし ぶ うち
11 やらかし た ❤
12 現実 やし
13 ほんま やし ぶ ()
14 や ま ー

>(月曜日から)逃げちゃ駄目だ……!
normal;えぇこれは、、、
beam
0 なんで 進捗 は これ じゃ ねぇ ・ ・ ω !
1 え ぇ これ は 光 は 、 !
2 え ぇ これ は 嫌 )
3 なんで 進捗 おっ け ( ω !
4 なんで 進捗 は これ じゃ ぞ 〜

> 子供たちにつられて苦手なミニオンズ…(´・ω・`)w
normal:気をしてねー(˘ω˘)
beam
0 気 を し て ( ˘ つ ω -(´∀`; )
1 気 を すん な ( ˙ ˘ )
2 仕事 を すん や ( ˙ ω -(´∀`; )
3 気 を し て ねー 。 ( ^ ー ` ・ )
4 気 を し てる やろ ( ˙ ˘ ω ˘ ・) !
5 気 を し てる やろ ( ˙ ˘ ω ˘ ω ・ )
6 気 を し てる の だ よ )

> 中華そば醤油をいただきました💕お、おいしい〜😍大盛いけたかも?
normal: 追加ですよねwww
beam
0 追加 し まし た ☺
1 追加 です よ ☺ 
2 追加 です よ ね www

Style Transfer

Style Transfer を Stanford機械学習クラスの CS 20SI の課題で実装してみた。Style Transfer とは絵画の写真から作風を特徴として、別の画像にその作風を適用するもの。Style Loss と Content Loss の和を最小化する方向で画像を生成するのが面白い。しかしながら一方でレイヤーの構造とかもろもろ職人芸的で自分で一から構築できる自信がない。課題のコードはこの辺

その1




その2



Chatbot tweet listener と reply worker を分離した

prediction の際に時々落ちる。そのたびに落ちないように修正しているが、まだまだ未知のものがありそう。落ちてしまうと reply できないままに情報が失われてしまう。これを改善するためにプロセスを分けて

  • listener: user stream を listen して tweet を serialize して sqlite に保存
  • reply worker: sqlite から1つずつ処理して predict & reply

とするようにした。

「1手詰ハンドブック」完了

詰将棋を始めて続けることが今年の目標の一つ。1日3問ずつ解いてようやく1手詰ハンドブック終わった。当初の目的である脳内ワーキングメモリの増量効果はまだ感じていない。
次は 3手詰ハンドブック〈2〉 やる。