sotetsuk's tech blog

ソウルでAlphaGo Movieを観てきた

f:id:sotetsuk:20171203172334p:plain

AlphaGoのドキュメンタリ映画、AlphaGo Movieの予告動画がカッコよすぎたので、週末にわざわざ韓国に出向き、研究室時代の韓国人の友人と一緒にソウルで観てきました。アジア圏での上映はこれが台湾に次いで二カ国目だと思います。

 

少なくともこの予告動画(Trailer)は一見の価値があるカッコよさです。

 

www.youtube.com

www.alphagomovie.com

 

ちなみに映画を見終えた数時間後に now available for download! とアナウンスがありました。控えめに言って死にたい。。。

 

内容

個人的にはとても面白かったです。

予告を見ればわかりますが、内容としてはAlphaGoと、最強の囲碁棋士と目されるLee Sedolの人類の威信をかけた五番勝負が中心です。囲碁ヨーロッパチャンピオンで、最初にAlphaGoに敗北するプロ棋士Fan Huiが、物語のある種の語り手となって話が進んでいきます。人物としては、話の中で一番注目が当たっていたのは当然Lee Sedol、その次がDeepMind CEOのDemis Hassabisという構成で、AlphaGoプロジェクトのトップのDavid Silverはそこまでフィーチャーされているという印象は受けませんでした(もっとフィーチャーされてもいいのではないかと思いました)。また当たり前ですが、全体としてとくに事前知識がなくても楽しめる作品になっていて、技術的な内容に関しても特に踏み込んだ話はありません。ただ、論文を読むだけではわからない当時の雰囲気を感じられるという点で一見の価値ある作品だと思います。

ちなみに日曜ですがガラガラでした。

個人的に印象に残った点

以下は多少ネタバレになるかもしれません。 

個人的に印象に残ったのは、やはり戦いが進むにつれ変わっていくLee Sedolの心境と、その表情でしょうか。試合前には静かながらも確固たる自信を覗かせていたLee Sedolですが、第一局目の終盤には少しあっけにとられ、投了時にはいささか認め難いといった表情を見せます。そして第二局目では、途中席を立ちタバコを吸って気持ちを整え戻ってきてところで、(一見人間には悪手にしか見えないながらも)芸術的とも言われたAlphaGoの妙手を突きつけられ、困惑を隠しきれません。

また第四局目、Lee Sedolが奇跡的な一手を放ち勝ち星をもぎ取るわけですが、その一手について聞かれたときの「自分にはそこしか考えられなかった」という趣旨の発言がとても印象深かったです。AlphaGoはそこに打たれる確率は0.007%程度と予測していたわけですが、Lee Sedolにはそこしか考えられなかったというのは少し面白い話です。

あと個人的にはもう少しAlphaGo製作の過程が観れると嬉しかったかなという印象ですが、冷静に考えるとある程度完成してからカメラを入れ始めたのでしょうから、しょうがないのかもしれません。それでも、AlphaGoチームがメンバー間で密に連携を取ってプロジェクトを進めていたんだろうという雰囲気がなんとなく伝わってきました。メンバー個々人ももちろん天才といって過言でない人々なのでしょうが、そうしたメンバーが個人技だけでなく、それなりの人数で一丸となってこうした大きな成果を出すというのは、やはり尋常ならざる偉業だと感じました。あとやたら筋肉質なメンバーが目立っていた印象で、僕も筋トレしようかなと少しだけ思いました(違

また改めて、作ったエンジニアにとってはただプログラム通りに動いて学習したモデルに過ぎないわけですが、囲碁棋士からみるとAlphaGoには知性があり、芸術的な一手を指すように見える(ときがあった)というのも面白いと感じました。正直僕はまだニューラルネットワークに知性を感じたり、あるいは例えば人格を持っているかのように感じたことはないですが、もしかすると、将来そういったニューラルネットワークが見られるかもしれないと妄想し、楽しみに感じました。

 

以上ポエムでした。ダウンロード版が観られるということで、皆さんも是非ご覧なってはいかがでしょうか。世間のAI・機械学習人材がNIPSで忙しい中、二年ぶり二回目に書くブログがポエム旅行記というのはなんとも情けない感じもしますが、やむを得ません。

ちなみにチーズダッカルビ美味しかったです!!

 

f:id:sotetsuk:20171203171410j:plain

チーズダッカルビ

 

Adversarial exampleについて

この記事はMachine Learning Advent Calendar 2015 - Qiitaの16日目です。

今回はDeep learningに関連したトピックであるAdversarial exampleについて簡単にまとめたいと思います(宣言していたものと違いますが...*1)。SNSなどを通じて情報が入ってくることは比較的多い話題だとは思うのですが、日本語でまとめた記事はあまりないかなと思ったので、誰かの役に立ってくれると嬉しいです。

 

これまでの経緯として、Adversarial exampleはSzegedy et al. (2014)ではじめて提案され、arXivに掲載された2013年12月から現在に至るまで2年間で100を超える引用数があります。ICLRなどを中心とした会議(というかarXiv)で研究・議論が進んでいて、今夏のDeep Learning Summer Schoolでは、GoogleのIan Goodfellowがこのトピックについて講義を行っています(slide)。

 

Adversarial exampleとは

Adversarialという単語を調べてみると

1. 反対の 2. 敵対する、対立する といった意味が出てきます。

 

Szegedy et al. (2014)では、学習済ニューラルネットワークを"欺く"ようにデータセットのサンプルから造られた人工的なサンプルのことを、adversarial exampleと呼んでいます。学習済ニュラルネットワークに対し、正しいクラスAだと識別されるサンプル xを用意します。これに対し、少しだけノイズ r \|r\|_{2}は十分小)を加えた \tilde{x} = x+rが、ニューラルネットワークを欺く(誤ったクラスだと識別する)ように最適化問題を解いて rを求めます。すると、(たとえば画像認識なら)人間の目には x + r xと同じようにクラスAにしか見えないのに、ニューラルネットワークは違うクラスのサンプルだと(強い確信度で)誤ってしまうサンプルが作れます。これは、もしニューラルネットワークを欺こうとする敵対者がいれば、そうしたサンプルを作れてしまうことになります。この問題は、実社会での応用を見据えれば極めて重要になってくる可能性があります。具体例としてGoodfellow et al. (2015)から引用してきた画像を示します(この rの構成方法は最適化問題を解くよりシンプルなものです): 

 

f:id:sotetsuk:20151216061247p:plain

 

パンダだと正しく識別していたものが、ノイズを加えられることで、人間の目にはパンダにしか見えないのにも関わらず、誤って識別されていることがわかります。Deep learningはご存知のようにImageNetなどの画像認識タスクで高い識別性能、汎化性能を示しているわけですが、このニューラルネットワークの挙動は、自然画像データのように空間の中で連続性が担保されていて欲しい( x \tilde{x} = x+r rが小さければ似たもの、同じクラスのものであって欲しい)データに対して適切でないという印象を受けます。

 

似たような研究として、Nguyen et al. (2015)は人間の目には全く意味を成さない画像(サンプル)なのにも関わらず、高い識別性能を示すDeep neural networkが、ある特定のクラスの画像だと強く思い込む画像を進化的アルゴリズムを使って構成しています(fooling images): 

 

f:id:sotetsuk:20151216171249p:plain 

  

なんでこんなことが起こるの?

直感的にはニューラルネットワーク非線形性から説明がされそうな気がしますが、Goodfellow et al. (2015)では、入力データ空間が高次元であれば(例え識別器が線形であっても)adversarial exampleを構成するのに十分である、という説明をしています。

まずそもそも、Goodfellow et al. (2015)によればadversarial exampleは線形な識別器でも実際に起こります。データ空間の高次元性による説明は線形識別器でもadversarial exampleが造れることに対する直感的な説明を与えます: 

学習済識別器にサンプルを入力して出力を得る際、ニューラルネットワークやロジスティック回帰をはじめとする多くの識別器では、その出力は次のような重みと入力の内積に依存します: 

$$\begin{equation}\displaystyle w^{\mathrm{T}}\tilde{x} = w^{\mathrm{T}}x + w^{\mathrm{T}}r\end{equation}$$

 w^{\mathrm{T}}rがどのように出力に影響を与えるのか考えます。ここで、 r = \varepsilon \cdot sign(w)とします。これは \|r\|_{\infty} = \varepsilonかつ、内積計算時に各要素の積が正の値として加算されていくようにしています。すると、 w^{\mathrm{T}}r \varepsilon \cdot n \cdot mとかけます(但し、 nはデータ空間の次元数、 m wの各要素の大きさの平均)。これは nに対し線形なので、少なくともこのように rを構成することで、 w^{\mathrm{T}}r = w^{\mathrm{T}}\tilde{x} - w^{\mathrm{T}}xを大きくしていくことが出来ます。これは、線形な識別器でadversarial exampleが構成できる直感的な説明になっています。近年提案されているDeep learningのモデルも(部分)線形な活性化関数を用いていることを考えれば、一つの仮説として説明力のあるもののように感じます。 

Adversarial training

Goodfellow et al. (2015)では、adversarial exampleを正則化に使うというアイディアを提案しています。最小化するコスト関数 J(\theta, x)に次のようにして正則化項を加えます: 

$$\begin{equation}\displaystyle \tilde{J}(\theta, x) = \alpha J(\theta, x) + (1-\alpha)J(\theta, \tilde{x})\end{equation}$$

Goodfellow et al. (2015)では、これによってMNISTでテスト誤差の改善を報告しています。

 

これに着想を受け、2015年末時点で既にいくつかの進展があり、PFIの岡野原さんがTwitterで紹介されていたので、そのコメントと共に紹介します。

 

Miyato et al. (2015)はコスト関数ではなくデータ空間に直接滑らかさを定義することによって、ラベル情報なしでadversarial trainingする手法を提案しました(VAT;Virtual Adversarial Training)。ラベル情報なしで学習できるためsemi-supervised learningのタスクに応用でき、arXiv掲載時点ではMNISTにおけるsemi-supervisedタスクのstate-of-the-artでした。

 

Nøkland (2015)は、よりシンプルな方法でコスト関数の勾配を変形し正則化する学習法を提案しました。

  

まとめ・感想

Adversarial exampleについて、文献を上げながら簡単に経緯と概要を説明しました。少し内容の薄い記事になってしまった感もありますが、最後に参考文献とリンクを上げているので、興味があればそちらを見てみて下さい。

参考文献

  • Szegedy et al., Intriguing properties of neural networks. (2014) ICLR. (arXiv)
  • Goodfellow "Adversarial example." (2015) Deep Learning Summer School. (slide)
  • Nguyen et al. "Deep Neural Networks Are Easily Fooled: High Confidence Predictions for Unrecognizable Images." (2015) CVPR. (arXiv)
  • Goodfellow et al. "Explaining and Harnessing Adversarial Examples." (2015) ICLR. (arXiv)
  • Miyato et al. "Distributional smoothing by virtual adversarial examples." (2015) arXiv. (arXiv)
  • Nøkland "Improving Back-Propagation by Adding an Adversarial Gradient." (2015) arXiv. (arXiv)

本文では触れなかった関連する文献やブログもあげておきます: 

*1:もともとはポアソン過程やその亜種を使ったWeb上のユーザ行動のモデリング事例について書く予定だったのですが、工数が存在しませんでした...