【書評】中国のAI技術と進むべき方向性:「AI Superpowers: China, Silicon Valley, and the New World Order」

最近、アメリカのAmazonで話題となっている「AI Superpowers: China, Silicon Valley, and the New World Order」という本を読んだ。
色々と面白い内容が多かったので、ここに書きたいと思う。

まず、この本の著者であるDr. Kai-Fu Leeは台湾で生まれてアメリカのカーネギーメロン大学で音声認識の分野でPh.Dを取った、人工知能の専門家である。現在はベンチャーキャピタリストとして北京を活動拠点にしている。
著者がどんな人かを手っ取り早く知りたい人は以下のTED動画を観ると良いと思う。
https://www.youtube.com/watch?v=ajGgd9Ld-Wc

この本を読むと、とにかく中国のAI活用がものすごいペースで進んでいるということが分かる。もちろん、筆者が中国をベースにビジネスをしていることを割り引いて考える必要はあるかと思うが、筆者の中国がAI実装の分野で力を付けていくだろうというビジョンは本書を読むと説得力がある。
筆者はディープラーニングによる世の中のシフトは、2つの変革として表れていくだろうと述べている。すなわち、「発見の時代から実装の時代」のシフトと「専門家の時代からデータの時代」へのシフトである。

今現在も続いている専門家がアルゴリズムを考えて、新たな有効な機械学習手法を編み出していく時代から、その手法を実際に社会実装していく時代が来るだろうとの考えから、このシフトを筆者は考えている。最近は多くの研究者がarxivなどに論文を学会で発表する前に載せており、コード実装を公開する例も多い。インターネットさえあれば、それらの世界最先端の技術を学ぶことができ、ビジネスに応用していくことが出来る時代である。

ビジネスとして最先端の機械学習の成果を利用するには、必ずしも最先端の研究者が必要なわけではない。筆者は「Today, successful AI algorithms need three things: big data, computing power, and the work of strong — but not necessarily elite — AI algorithm engineers.」とも述べている。
このように機械学習の社会実装という面だけで考えれば、中国はアメリカに劣っていないという。また、研究面でも中国出身の研究者が多くの論文を発表するようになってきており、AAAIというAI関連の有名な学会の日程が旧正月と被るために日程を変更せざるを得なかったという象徴的な出来事があった。
https://www.theatlantic.com/technology/archive/2017/02/china-artificial-intelligence/516615/

このようにAI研究や社会実装で中国の力が伸びてきており、半分冗談であるが「中国がシリコンバレーにAI研究でどれほど遅れているか?」と聞かれた中国の実業家は「16時間」と答えたらしい。これはカリフォルニアと北京の時差である。「When asked how far China lags behind Silicon Valley in artificial intelligence research, some Chinese entrepreneurs jokingly answer “sixteen hours”—the time difference between California and Beijing.」と答えたらしい。

また、中国企業のハードワークさも今後のビジネスの行方に有利に働くと考えている。筆者に言わせると、中国企業に比べてシリコンバレーの企業はとてもゆっくりと怠けて仕事をしているスピード感の違いを感じるそうだ。また、非常に熱心に学ぶ中国の学生やエンジニアの話も紹介されており、英語圏の著名なAI研究者の動画などにはすぐに中国語の字幕や翻訳が出るとのことで、将来性ももちろん感じる。この辺りの話を読んでいると、高度成長期時代の日本の姿に重なるものを感じる。
もちろん筆者だけでなく、世の中の著名な人物も似たような評価を下している。たとえばエリックシュミットは講演のなかで「Trust me, these Chinese people are good. . . . If you have any kind of prejudice or concern that somehow their system and their educational system is not going to produce the kind of people that I’m talking about, you’re wrong.」と述べたそうだ。

この本のなかでは、一体何が中国をAI実装の分野で強くしているのかといったことが書かれている。例えば、独自の文化圏、国家主導の仕組みづくり、テクノロジーを一段飛ばしで来たこと、データを使われることへの許容、ハードウェアに強い深圳を持つこと、などなど様々な点が強みとして挙げられている。
例えば、独自の文化圏として、昔の話であるがグーグルサーチは中国市場を単なる一地域としてしか見ておらず、本格的なローカライズのペースが遅かったと言う(ちなみにこのころは著者はGoogle Chinaで働いていたそうだ)。通常、検索結果をクリックするとそのページへ飛ぶが、中国人は検索結果を「ショッピングモール」のようなものだと思っており、検索結果をクリックしてもそのサイトは別タブ・ウィンドウで表示され、検索結果のページが残ったほうが効果的であったという。Baiduはいち早くそのように実装し、Googleに対して優位性を取ったという。
また、国家主導の仕組みづくりとしては、地方自治体が競うようにしてITベンチャーを簡単に設立できる特区のような地域を作るなどして、ベンチャー企業が数多く設立される仕組みを作っている。

テクノロジーを一段飛ばしで来たことは、例えば多くの人にとってはデスクトップやラップトップを経由せずにスマートフォンがメインのデバイスとして使われるようになり、スマホ特化のアプリやベンチャーが生まれたり、クレジットカードを経由せずにQRコードによる支払いが進んでいくようになったことなどが挙げられる。
データを使われることへの許容とは、直接的に言及されていないが中国政府による検閲やプライバシーといったものの意識が近年まで問題になっていなかった背景などもあり、企業に個人データを使われても、それで便利になるならば許容する精神が西側諸国よりかは大きいのだと思われる。
また、深圳はハードウェアのメッカとして知られているが、現状では他国の企業に比べて中国企業は文化・言葉などの面でビジネスをしやすいという。他国が苦労しながらもハードウェアを深圳で作ろうとしている間に、中国企業は様々なトライアルアンドエラーを行ってAI技術を用いた新しいデバイスを作れるようになるだろうと著者は予測する。
このほかにも今後数年~十数年のうちに実現するであろう、AI技術を社会実装した例なども挙げられており、専門家の目から見た将来像を学ぶ上で有益な一冊であると言える。

後半は前半とは大きく変わって、著者のTEDトークにもあったステージ4のがんであると診断された後に気付いた人生の目的やそれに向けたAI活用の話になってくる。著者は、がんと診断される前は仕事一筋で、どれだけ自分が社会に与える影響を最大化できるかといったことだけを考えて生きてきたという。しかし、人との関りや家族友人を大切にすることこそが一番重要だと思うようになったと語る。よく言われていることだが、死の間際にあの時もっと働いていれば良かったと思う人はほとんどいない。
そういった出来事を踏まえて、AIの発展した時代には人間は人との関わりを活かした仕事を進めていくべきであると言う。例えば、誰もステージ4のがんを機械に宣告されたくないはずで人間的なアプローチを持った仕事は残っていくし重要であるだろうと予測している。この辺りはTEDトークを見てもらえれば良く分かると思う。

個人的にはこの本がアメリカのAmazonで大ヒットしている現実を見ると、やはり欧米諸国は中国とパートナー関係を結んでビジネスを進めていこうという流れが出来てくるだろう。最後の方にもこの本のタイトルである「AI Superpowers」は決して、冷戦や宇宙進出の競争の時代にあったような対立関係を煽るものではなく、米中で協力してAI技術を発展させていくべきであるとも述べている。そうなった際に置いてけぼりにならないように、日本企業が中国企業から学ぶべきところは多いだろうと思う。

Kerasで転移学習をする際にはpreprocess_input()を呼ぼう

画像に関するタスクを扱っている際に、事前学習済みの重みを利用した転移学習を行うことは良い精度を出すことが多く広く使われています。Kearsには学習済みのいくつかのモデルが用意されており簡単に転移学習を行うことが出来ます。

(https://www.kaggle.com/amadeus1996/fruits-360-transfer-learning-using-keras)

公式のサンプルなどを見れば問題無いのですが、この事前学習済みのモデルを使う際にはpreprocess_input()という関数を呼び出して画像に対して前処理を行うことが想定されています。しかしながら、いくつかのブログ記事などを見たところpreprocess_input()を呼ばずに、転移学習を行っている記事があったため今回この記事を書きました。厄介なことに、preprocess_input()を呼ばなくても、VGGやResNetなどの高容量なモデルは前処理分の処理を学習するようで割と良い精度を出します。本質的には前処理しないことで、無駄な訓練が行われていることになるので、忘れずにpreprocess_input()を呼ぶべきでしょう。

ちなみにpreprocess_input()の中では、モデルによって画像の正規化、ImageNetデータセットのRGB各チャンネルごとの平均値を引く、などの処理が行われているようです。

Batch Normalization と Dropout は併用しない方が良いという話

Deep Learningのモデルを訓練していたところ、思うようにvalidation lossが下がらないことがあった。色々と調べた結果、Batch NormalizationとDropoutを併用していたのが原因であったので、誰かの為に書いておく。

この論文その解説にある通り、Batch NormalizationとDropoutを併用するとパフォーマンスが悪化することがある。原因は、「Dropoutを行うことで学習時と評価時で分散が変わってしまう一方、Batch Normalizationは学習で得られた分散を評価時もキープしてしまうため齟齬が生じることが原因」とあり、言われてみればなるほどという感じである。

結論としては、DropoutかBatch Normalizationのどちらか一方だけで試してみてvalidation lossを下げようとするのが良さそう。Deep Learningを使えばすべて解決するわけではなく、パラメータチューニングやモデル構造のチューニングが良いパフォーマンスを出すためには必要だと分かる事例の一つ。

MITのLex Fridman氏によるAIポッドキャスト

MITのresearch scientistである、Lex Fridman氏がAI関連のポッドキャストを始めたそうです。AI関連のBig-pictureについて著名なゲストと話すとのことです。https://lexfridman.com/ai/

少し聞いてみましたが、音質も良く英語も分かりやすい方だと思うのでオススメできそうです。以前、データサイエンス関連のポッドキャストをまとめた記事も書いているので、そちらも参考にしてください。

Lex Fridman氏はMITでDeep Learningによる自動運転に関する講義などを行っており、授業の様子はYouTubeで公開されています。

PyTorchに入門するために「PyTorchで始める深層学習」を読んだ

タイトルの通り、最近目にすることが多くなったPyTorchを学ぶために「PyTorchで始める深層学習」という本を読んだ。本当に深層学習を全く触ったことが無いという人が、PyTorchで始めるには良いのかもしれないが、あんまり広くはオススメはできないなという感想だった。PyTorchに限らなければもっと良い本が他にあると思う。例えば前に記事にした「Kerasの作者が書いたDeep Learning解説本:「Deep Learning with Python」を読んだ」で紹介した本の方が、Kerasで深く解説されており入門には良さそう。

Amazonのレビューにもあるが、あまりPyTorchならではの良さや詳しいAPIの解説などの部分の解説に欠ける感想だった。この本で取り上げられている内容はMNISTやFashion-MNISTや、画像分類、テキスト分類、強化学習だが、どの項目においても本当に基本的な例題をPyTorchで書いてみましたというレベルであった。

また、最近出た本なのにサンプルコードがそのままでは動かない部分があったり(MNISTのダウンロードに失敗する、RGB画像を想定した処理なのにデータセットにRGB以外の画像が紛れ込んでいる、など)、lossが収束しているようには解釈できない結果を載せて「誤差が収束していると分かる。」などと書かれていて、少しモヤモヤする部分が多かった。

PyTorch自体は早いペースで開発が続いているので、どちらかというとWebの記事や公式ドキュメントを参考にして勉強を進めてみるのが良いのかもしれない。公式のチュートリアルには60分でPyTorchに入門してみるという趣旨の「Deep Learning with PyTorch: A 60 Minutes Blitz」といったものが用意されており、試したところ結構良かったので、その他の公式チュートリアルを試してみようと思う。

直感 Deep Learning

直感 Deep Learning」という書籍が出るそうです。翻訳版なので原著を調べてみたところ、「Deep Learning with Keras」でした。英語版の方は、以前読んでおりレビューも書きました。この本はKerasを用いて、画像識別、自然言語処理、時系列データの分析、GAN、強化学習など幅広くトピックがカバーされていて、Kerasの使い方を学ぶのにも役立ったと思います。

以前書いたブログ記事:Kerasによるニューラルネットワーク本「Deep Learning with Keras」を読んだ


 

特徴量エンジニアリングに焦点を当てた簡潔な本:「Feature Engineering for Machine Learning」

機械学習の特徴量エンジニアリングに焦点を当てた本、「Feature Engineering for Machine Learning」を読んだ。

テーブルデータ、画像データ、文章データなどの各種データに対しての基本的な特徴量エンジニアリング手法が網羅されている本でした。例えばone-hotエンコーディングやn-gram、SIFTなどなど基本的な手法から、Box-Cox変換、Dummy Coding、データリークの問題など、一般的な機械学習の入門書ではカバーされないような内容もところどころ書かれていた。

後半ではCNNの仕組みや、論文推薦システムの構築などの、特徴量エンジニアリングを利用した実アプリケーションの作成もチュートリアル的に示されており、特徴量を加えることで精度が大きく変わるところなども分かり、特徴量エンジニアリングの重要性が学べる本となっていた。

全部で200ページほどの結構薄い本なので、英語の技術書に挑戦してみようかな、という人には機械学習の基礎が出来ているのであれば分かりやすいかと思うのでオススメしたい。

ニューラルネットワークを利用した決定木:Deep Neural Decision Trees

引き続き、機械学習の解釈性についての論文を読んだ。今回読んだのは、「Deep Neural Decision Trees (WHI ’18)」。著者による実装のページはここ

決定木とニューラルネットワークを用いる他の論文などと同様に、決定木の解釈性とニューラルネットワークの精度の高さの両立を狙っている。特に表形式データの分類に有効と著者らは述べている。

この論文では、微分可能なsoft binningという関数を入力データにかませて、学習を重ねることでsoft binningのバイアス項の値を見ることで、各フィーチャーに対してどこで決定木を分岐すれば良いかが分かるという手法を提案している。soft binningで決定木の分岐を表現して、そのあとにクロネッカー積を取ることですべての分岐の組み合わせを網羅的に調べることが出来る。すべての層は微分可能なため、通常のバックプロパゲーションによりネットワークの学習を行うことが出来る。

著者らは複数の表形式データセットに対して、決定木、ニューラルネットワーク、Deep Neural Decision Tree、の三手法で精度評価を行っている。結果はデータセットによってまちまちだが、基本的にニューラルネットワークと同等程度の精度が出ている。実験の結果、DNDTでは全く推論に使われない特徴が検出できるなどの副次的な成果も述べられている。

GPUによる速度性能の確認も行われており、フィーチャー数が増えた場合でもCPUと比較して、あまり実行時間が増えないようになっている。

今後も機械学習の解釈性関連の論文を色々と読んでいく予定。

GPSデータによる交通事故リスク予測:Learning Deep Representation from Big and Heterogeneous Data for Traffic Accident Inference

読んだ論文のメモ。Learning Deep Representation from Big and Heterogeneous Data for Traffic Accident Inference (AAAI ’06)という論文を読んだ。

内容はGPSデータから交通事故のリスクレベルを予測するというもの。GPSデータには東京のデータが用いられている。GPSデータは精度自体やビルの陰や建物の中にいるなどの理由でノイズが乗っていると考えられる。この研究ではauto encoderを利用してGPSデータからノイズ除去を行ってからロジスティクス回帰に入力して事故リスクの予測をしている。

実験では、単純な決定木・ロジスティクス回帰・SVMと提案手法を比較して、提案手法がリスクレベルをよく予測出来ていることを確認している。また、主観評価として夜になると事故リスクがさがる、昼間は都心部の事故リスクが高い、東京・横浜間の道路が他に比べて事故リスクが高い、など我々の感覚に近い結果が出ていることも確認している。

スマートフォンの普及によりGPSデータは簡単に取得できるようになっているため、こういったタイプの研究やアプリケーションは今後増えていくだろうと考えられる。

 

機械学習によるメモリアクセス予測:Learning Memory Access Patterns

ICML 2018の論文リストを眺めていて、目についたタイトルの論文を読み始めた。まず最初に「Learning Memory Access Patterns」という論文を読んだ。この論文はRNNを用いてメモリアクセスパターンを予測することで、プリフェッチの精度を上げてパフォーマンス向上を目的としている。ある種の調査によると、CPUサイクルの50%以上はメモリからのデータを待っているともいわれており、プリフェッチの精度を上げることはコンピュータの性能向上に寄与する可能性が高い。

アイデアとしては、メモリアドレス空間をvocabralyとして扱う。これは、アドレス空間は非常に広大だが、実際にプロセスによってアクセスされる個所は局所的であり、これを予測しようとすると非常に疎なデータであるため正規化した際に有用な情報が失われてしまうためである。また、現在アクセスされているアドレスと次の時間にアクセスされるアドレスの差分(デルタ)を正解ラベルとして用いることで、デルタは通常小さいため、訓練が上手くいくというアイデアが用いられている。

また、単純にLSTMを使うだけでなく、前処理としてクラスタリングを行ってからLSTMにかけることで、プログラムのローカル構造(例えば構造体のアクセスや配列の走査)などの特徴を掴みやすくなったと述べている。

著者らは様々なデータセットを用いて、既存のメモリプリフェッチ機構とprecision/recallを比較しているが、クラスタリング+LSTMが良い性能が出ることを確認している。

Hit/Missの性能が良いのは理解できなくもないが、気になるのはやはり速度性能である。これは推測だが、おそらく既存のメモリプリフェッチ機構を置き換えるにはLSTMの推論は処理が重いのではないかという気がする。著者らは実際にH/W実装はまだ行っておらず、速度性能については今後の課題だと述べている。今後TPUのようなAIプロセッサの技術革新が進んでいけば、将来的には既存のプリフェッチ機構を置き換える可能性を秘めているかもしれない。

論文では、以前話題になったB-treeよりも高速なインデックス構造を機械学習で作成した「The Case for Learned Index Structures」という論文があったが、今後は既存のコンピュータアーキテクチャ分野にも機械学習が進出する未来がやってくるのかもしれない。