Stimulator

機械学習とか好きな技術話とかエンジニア的な話とかを書く

人工知能学会全国大会に参加した #jsai2017

- はじめに -

JSAI2017 – 2017年度 人工知能学会全国大会(第31回) に参加した。

今まで学会への参加は学生発表、個人の聴講参加だけだったが、今回は企業ブースでの参加となった。

あまり聴講への参加は出来てないがメモ程度に気になったものをまとめておく。


- 聴講 -

企業ブース出展者での参加では1企業につき2名分のみ聴講証が渡されていたため、6割は会社の犬として自社の説明やステッカー配りなどをしていた。

以下には会社の犬時間以外で聴講し気になった所のみまとめておく。

会社の犬なので、基礎研究より産業応用の部分が多いかもしれない。

05月23日

DNNによるRDF上の単語間の関係の予測を見たかったのだが、部屋に着いた時には質疑だった。

Deep Learning系やチュートリアルセッションはどこも激混みで、大変であった。


DNN圧縮時のパラメータと圧縮後の精度, 大きさの関係

DNN圧縮時のパラメータと圧縮後の精度, 大きさの関係

Deep CompressionなるDeep Neural Netの圧縮手法に関する発表。
元論文にあるK-meansではなくX-meansを使っていた。
そうしたら、パラメータを設定する時の基準の知見が得られたよという内容。
クラスタ数を自動推定するX-means法を調べてみた - Qiita


「DNNの圧縮に枝刈りを使う」というのは恥ずかしながら初めて知った手法で、Deep Neural Networksの重み量子化と共有, ハフマン符号化をやれば上手くいくらしい。前提となる論文は以下。

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding

先に上記Deep Compressionの話を書いておくと、所謂「枝刈り」と同じ概念で、ニューロン間を接続しているノードを狩ってパラメータ数削減、計算量圧縮を図るというもの。論文ではVGGモデルが49分の1にまで圧縮され、高速化されながら同等の精度を保っている。

まずは閾値を取って重み行列を疎行列化してしまう。
疎行列となった重み行列をK-meansでまとめて クラスタのインデックスとcentroid行列に分けて扱いやすくする(量子化)。
そうした場合、追加の学習をしないとDNN全体の精度が落ちた状態になるが、K-meansで求めたクラスタを使い、クラスタ毎の勾配を使いながら追加で学習を回す事で精度が担保される(Fine-Turning)。
その上で重みをハフマン符号化してやってコンピュータ最適にしてやる事で、速度と電力消費が圧倒的に改善されている。


本題の発表では、ハフマン符号化を使わず、圧縮後に再学習させない事を制約条件としていた。
(「まあそこまでやるのどう考えても実装と設計が面倒だよね…」と正直思った…)

本題はK-meansのパラメータ設定に関して基準が欲しいとの事で、パラメータを変更したいくつかのモデルとX-meansで試していた。

結果としては、量子化する際のクラスタ数が少ないと精度が下がるが、大きすぎるとモデルが大きくなるのであんまり意味なく、そうするとX-meansを使った場合に「小さすぎ」「大きくなりすぎ」問題が発生してあんまり良くなかったッスという感じだった。
ただ、大まかな基準は示されていたのと、再学習等の余地は大きそうだなと思った。
あと、圧縮方法について幾つか調べてDeep Learning with Limited Numerical Precision等を知れて良かった。

日本語だと以下を見つけたので気になれば。
ニューラルネットのメモリ消費を小さくする類の手法 - うどん記
introduction-to-deep-compression (SlideShare)

追記:


ニューラルネットワークの量子化についての最近の研究の進展と、その重要性 - SmartNews 開発者ブログ 良いです。




CNNへの競合学習の統合による表現学習の強化

CNNへの競合学習の統合による表現学習の強化

DNNの強みは入力データから認識に必要な情報の基底を獲得する表現学習(Representation Learning)にあるけど、今のCNNってあんまり表現学習に適してはいないよね。
じゃあSOMなんかに使われる競合学習みたいな教師なし学習と共存した学習手法があれば、表現学習可能なCNNって作れるよねという内容。

実は学生時代かなり似た研究をしていた時期があって、SOMとNNを接続して上手く学習させようとするCounter PropagationとかSOMを多層化して教師あり学習に応用するSOINNなんかを熱心に調べていた。
(結論から言うとこれはあまり上手くいかなかった...)

発表では、SOMで言うところの勝利ノードの出力(ユークリッド距離)とBack Propagationをシームレスに組み合わせ、SOMフィルターをいくつか作りその数が十分な場合において通常のCNNより良くなったというものだった。
f:id:vaaaaaanquish:20170527231824p:plain

教師なし学習が前提にあれば学習データが少ない状態からでも応用できる可能性があると示唆はしていたが、指摘の通り学習データが少ない場合にSOMのフィルター数を十分に確保できないので難しそう。

SOMって結構安定しないので、数確保したりSOMの研究みたいになりはじめてう~んってなっちゃうんだよね…としみじみ思った。
SOM自体がそれなりの表現学習能力を持っていたと仮定するなら、後方に接続するネットワークもPre-trainingを十分に行ったものを使うとかすると良さそう。


05月24日

お仕事でも自然言語処理にお熱で、時間的にちょうど医療応用の部屋で自然言語処理系のセッションがあったので聞いた。

あとはせっかくなのでオーガナイズドセッションでLinked Dataの話を聞いた。


深層学習による医療テキストからの固有表現抽出器の開発とその性能評価

深層学習による医療テキストからの固有表現抽出器の開発とその性能評価

医療文書って非文法的で断片化した表現が多いので難しい。海外だと語彙サーバーのようなものがあったり標準的なツールがあるが、日本にはないので作りたい。
発表では、よくある双方向LSTM(Bi-LSTM)とCRFをつかった手法を適応し、既存システムに多いCPFベースより精度良く出せたという事だった。
課題は2つあり、疾患識別(ER)と疾患と医師の初見の分類(P/N分類)を1つのEnd-to-Endなモデルで行いたいらしい。

参考にしたのは多分以下(?)。

Bidirectional LSTM-CRF Models for Sequence Tagging

Bi-directional LSTMは文脈を過去(past)と未来(future)に分けて、過去->未来(未来->過去)と双方向に接続するLSTMの拡張モデル。
それらを系列ラベリングに適応するために確率的条件場(CRF)に適応するというのは最近の流れの一つである。

発表内ではBi-LSTMに対して、表層文字のみ入力する場合や辞書の活用等と比較していたが、あまり有意差があるようには見られなかった。
(なかなか分野が違うので、結果を見ても分からず…)

あと普遍的な課題として「コーパス量がもっとあれば」という話をしていて、やっぱり自然言語処理機械学習組み合わせるとどこもそうなるよなあ…と思った。

ついでにBi-LSTMについて調べてた時に見た把握しやすいURLを書いておく。
pythonでBidirectional LSTMを使った分類問題 - ゆるふわめも
ニューラルネットワークで時系列データの予測を行う - Qiita
Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs – WildML


Sleep Pattern Visualization via Clustering on Sound Data

Sleep Pattern Visualization via Clustering on Sound Data

睡眠の改善のための分析をSequenced-based kernel SOMを使って視覚的に行ってみようという発表。
利用したのは、睡眠中の音声データで、スコアリングしていくと睡眠改善において音データは非常に重要だという事がわかる。

Sequenced-based kernel SOMは、KLSOM(Kullback-Leibler情報量を使ったSOM)を組み込んだKernel SOM(カーネル関数を使うSOM)、SbSOM(クラスタの時系列変化を可視化するためのモデル)を組み合わせたモデル。
これで見た。


結果を見れば分かるが、音声データが睡眠の情報と並列している事が視覚的にわかる(歯軋りの時間と悪い睡眠の時間が同じ等)。
f:id:vaaaaaanquish:20170527224123p:plain


SOMの時系列可視化はかなり有用そうなので自分でも何か使いたいなと思う。

英語の発表で、プレゼンを見ながらギリギリ追い付いたくらいなのでこの程度で。
質疑では、スマフォで録音した音声じゃなくてマイクにすれば~みたいな話がなされたが全く追い付けなかった(英語力が皆無)。


オーガナイズドセッション OS-7 意味と理解のコンピューティング (2)

オーガナイズドセッション OS-7 意味と理解のコンピューティング (2)

Linked DataやSPARQL、セマンティックWebの話を産業科学研究所の古崎先生がセッションしていた。
なかなか歴史のある話で面白かった。

後は宇宙航空研究開発機構宇宙科学研究所の人の宇宙研究で役立つ事はない話とか、雑誌取材の裏側の話とか。

後はおざき先生が人工知能学会、無限に楽しかったという話をしていて楽しそうだった。
DeepNetは夢があっていいですね。


05月25日

学生のポスターセッションがあったので、同じ部屋内にあった企業ブースは人が混み混みだった。

PFNの岡野原さんの公演を聞きに行きたかったが、こちらも激混みでダメだった…流石岡野原さん…


RDFデータベース構築によるユーザの気分に応じた観光スポット推薦システムの提案

RDFデータベース構築によるユーザの気分に応じた観光スポット推薦システムの提案

観光スポットの推薦システムをSPARQLとAndroid OS上で作成したよという内容。
推薦方法としては観光地データをTF-IDFに投げて、感情(喜べる, 泣ける,…,etc)で分けてユーザに推薦するという事だった。

指摘でもあったが、評価に利用したのがGoogle API等に比べた「新規性」なる軸であり、元となるデータベースが違うので怪しい部分があるが、感情によって推薦するシステムはかなり有意であるとは感じた。


価値観に基づく行列演算ベース情報推薦システムの提案

価値観に基づく行列演算ベース情報推薦システムの提案

商品推薦システムでよく使われる、行列計算を利用したMatrix Factorizationに価値観モデルを付与してやろうという話。

価値観モデルはある商品の属性に対するこだわりを定義するモデルで、簡易な数式ながら少ない評価数で安定したモデル化が可能となる事が知られている。
https://kaigi.org/jsai/webprogram/2017/pdf/310.pdf

Matrix Factorizationは予測評価値をユーザベクトルとアイテムベクトルとに分解し、行列計算と捉える事で、二乗誤差を使ったSGD等で最適化していく方法。
Matrix Factorization: A Simple Tutorial and Implementation in Python @ quuxlabs
MatrixFacorization を使った評価予測 ―アルゴリズムシリーズ 3―|サイバーエージェント 公式エンジニアブログ
Matrix Factorizationとは - Qiita

価値観モデルとなるベクトルを別途用意して、Matrix Factorizationしようという話。
従来の行列ベースのものと、手動でアイテムベクトルを設定したもの、SGDで最適化したものを比較していた。
SGDを回していくと精度が下がるなど少し疑念の残るグラフが示されていたが、価値観モデルを加えると初期の精度が良くなり、少ない評価で良い結果が出せる事が分かった。

指摘にもあった通りFctorization Machinesのような手法を使うともっと良くなりそうである。
Factorization Machinesについて調べてみた - Qiita

あと会場で調べてたらこんなんとか


行動経済学的な知見を用いた消費者の情報探索行動の予測とレコメンデーション法の開発

行動経済学的な知見を用いた消費者の情報探索行動の予測とレコメンデーション法の開発

あるWebサイト(中古車販売)のコンバージョンをRFやXGBoostを使って分析してみましたという内容。

価格帯や車種によって、特徴的なVCがあるという結果が見られた。

Google Analyticsの内容しか利用できなかったらしく、なかなか厳しそうだった。
分析データはやはり多い方が良い。


情報量に注目した推薦のための商品間関係性の分類法

情報量に注目した推薦のための商品間関係性の分類法

牛乳を買う理由にはクリームシチューを作る等の要因があり、同時に適した肉や野菜を買う。
つまり、商品関連性を見つければ次にユーザが買い物カゴに入れる商品が推定出来るのではという話。

条件付きエントロピー相互情報量を使い、「同時性・代替性(ある牛乳を買ったら他の牛乳を買わない)」「相補性(焼肉のタレを買ったら肉を買う)」「独立性(無関係な商品購入)」を定義し、次のネットショップにおける次の買い物商品を推定する。

結果を見ると、それなりに推定出来ながら、ネットショップなのでカップラーメンを複数種類まとめ買いされていたりとの課題は多かった。
加えて、ネットショップではUIによる差異が大きい事があると指摘されていた。確かにと思った。


- 聴講以外 -

はじめて企業ブースの中の人として参加してみて、自社説明や配布物配り、名刺交換をやった。
自社Tシャツを着た。完全に会社の犬だ。

学生時代は「なんで学会に企業ブースなんか出すんだろう」と思ってたけど、社会人になって企業ブースに企業側として参加してみて「なんで学会に企業ブースなんか出すんだろう」ってなった。

まあ冗談だが、ブランディング等の効果はあったと思う。
人工知能というか、機械学習にかなり注力しつつあってかぐるますたーガンガン雇ったりしてるので、機会としては良かった。
研究界隈の大ボスみたいな人が来て、クッソビビリながら自社説明するのとかスリリングで良かったです。
これからも弊社をよろしくお願いします。


個人としては幾人か昔から知っている人や、Twitterで知り合った人と挨拶出来たのが良かった。
挨拶してくれた皆さんありがとうございます。
挨拶できなかった人もまたいつか。


MicrosoftとPFNのMeetupではChainerの良い話が沢山聞けた。
海野さん相変わらず面白かったし、PaintChainerの心暖まる話も良かった。
MSの発表はde:codeで見たのと大体同じだったが、新しいSur◯aceをプレゼントする企画があってビビった。
色んな人に挨拶できたし、shi3zの激しい発言を聞けて良かった。


名古屋メシは味噌煮込みうどんが舌に合わなかった。
(有名な山本なんとか行ったんですがアレ美味いって言うんですか…)

でも、手羽先はめっちゃうまかったし会場近くに飲み屋があったのも良かった。

会場ちょっと狭くて廊下と階段なかなか辛かったけど、場所はめちゃ良かったよね。
美味しいご飯情報もネットで得られて良かった。


- おわりに -

知見が多く得られて、多くの人に会えて良かった。

ネットでは色々あったけどそっちはTwitterで。

あとこれ名古屋で一番ウケました。