Scikit-Learn classification_report

知っている人は知っているのだと思いますが,機械学習ライブラリ scikit-learn の 関数 classification_report には digits というキーワードがあり,スコアの桁数を指定できます.
classification_report.py のソースコードを読んでいるときに気が付きました.

ネット検索すると表示桁数は変えられないという書き込みが上位に来ますが,digitsで指定できます.(scikit-learn 0.23で確認)
デフォルトでは小数点以下2桁になっています.

classification_reportは,多クラス分類の場合に学習結果をクラス毎に集計して recall, precision, F1 を表示してくれる便利ツールです.

def classification_report(y_true, y_pred, labels=None, target_names=None,
sample_weight=None, digits=2):

DeepLの翻訳が日本語に対応

昨年の2月26日に翻訳サイトDeepLの紹介をしました.そのときには,日本語対応ではないということを書きましたが,少し出遅れましたが,今月19日に日本語に対応しました.

まあ,とりあえず試してみてください.翻訳品質の高さにかなりの衝撃があります.たぶん,我々言語処理の専門家の方が衝撃が大きいかもしれません.

https://www.deepl.com/translator

ちなみに,訳文の品質は非常に高く,インクリメンタルな翻訳もできるのですが,並列句の解析を間違えることがあります.

「PCの付属品にはライセンスや後のサポートで必要な物が含まれています」を訳すと,"The accessories of the PC include everything you need for licensing and support."となり,ライセンスとサポートを並列句として訳してしまいます.人間でも間違えますし,別の状況ではこの解釈が正しい場合もありますので,常識がないと正確に文を捉えられない例になっていて,元来難しいのですが.

CPU or GPU

2011年の言語処理学会年次大会でGPUを使った言語処理の発表をした頃は、現在の深層学習ブームの前であったこともあり、言語処理におけるGPUの利用はあまり注目されていなかった。反対に、現在は「ちょっと偏り過ぎでは」と懸念するほど、GPUを使った深層学習+言語処理が研究の主流になっている。

とにかく、現在の深層学習はGPUなくては研究できない。GPUは本来は画像処理を高速に実施するための専用装置であったが、その並列計算機構を一般の計算にも利用するための開発環境が提供されたことで、大量の行列やテンソルの計算が必要となる深層学習の高速化になくてはならないものとなっている。たとえば、CPUで計算すると数日かかる学習がGPUを使えば数時間で終わるというぐらいの違いがある。これは、パラメータ探索のために学習を何度も行わなければならない深層学習の研究を実際に行う際には決定的な違いになる。

少し前置きが長くなったが、このことは今の深層学習に携わっている人にとっては常識なので目新しい情報ではない。ではここで、少しCPUの未来を見てみよう。もし、GPUではなくCPUのマルチコア化が究極的に進んだらどうなるか。CPUメーカーのAMDがEPYC 7702という新しいCPUの生産を始め、HPなどのサイトから搭載サーバを購入できる。7702は64コアのCPUで、普通のCPUの命令セットが64コア並列で動作する。実際にはさらに1つのコアで2つのスレッドを動かせるので、128並列の計算が可能。HPでは2wayのサーバーが購入できるので合計256スレッドの計算が1台のマシンで可能になる。現状ではサーバーの価格が800万円ぐらいになるためあまりお徳感はないが、CPUの値段が下がってくれば、GPUとの競合になりそうだ。

現在のGPUは数千個のセルが搭載されているので、並列度で言えばGPUが上回っているが、実際の処理速度はそう単純ではない。CPUと比べてGPUで計算する場合には次のような弱点がある。

  • GPUのクロック数(1~1.5GHz)がCPU(3~4GHz)より低い。つまり単純な処理速度が1/3程度。
  • GPU・CPU間のデータ転送はデータバスを通るため遅く、大量のデータ転送には向かない。
  • GPU側で並列処理の効果が出るのは、まったく同じコードをまったく同じ処理として大量に実行する場合のみ。コードが同じでも条件分岐があれば、分岐に相当する数だけ処理速度が低下する。たとえば、if (a>0) {処理1} else {処理2}のコードがあった場合は、処理1に分岐したセルが実行中は、処理2に分岐したセルが休んでいる。逆も同じ。つまり、並列度が半分になる。このように、GPU上のコードに条件分岐があるとその分実際の並列実行度は下がっていく。
  • GPU側のメモリは上位のV100でも32GBに限定される。大きなデータをランダムにアクセスするような処理をGPUにやらせるには、GPU側のメモリが不足する。
  • GPU上の並列計算が、少数のデータ(変数)を集中的に更新するようなコードになっていると、アクセス待ちが発生し並列度が上がらない。または、並列に書き込んでしまうと処理結果が想定した結果にならない。

もし、AMDから数百スレッドの計算ができるCPUが出れば、学習データのサイズやモデルの条件にはよるが、CPU側での計算がGPUより速くなるケースが増えて行く。さらにもっと先の未来では、数千コアのCPU(たぶん命令セットがRISCのように最小限)が深層学習用の計算資源の中心になっているかもしれない。

deepfake

トランプ大統領が、ニュースメディアに向かって、君たちはフェイクニュースだと反論する。そんな時代。この場合は、本当にニュースがフェイクなのかリアルなのか知る由もないが、とにかく巷にフェイクが溢れ始めている。

フェイクの最先端を行くのがディープフェイク。特に画期的なのが、深層学習を使って人間の顔を生成する技術の進歩。GANと呼ばれる敵対的学習は、Generative Adversarial Network の略で、2014年にモントリオール大学の Ian Goodfellow が神経回路網国際会議NIPSで発表してから、多くの注目を集めている。GANの学習の仕方の特徴は、通常のニューラルネットと違って、画像を生成するGeneratorネットワークと画像がホンモノかニセモノかを見分けるDiscriminatorネットワークの2つを同時に学習していくところにある。Generatorは自分が生成するニセモノ画像が、Discriminatorにニセモノと検知されないように徐々に絵が上手くなっていく。Generatorはゼロから画像を生成しているので、どれがホンモノの画像かを教えられていない。何度も画像を生成するうちに、徐々にこんな画像ならDiscriminatorを騙せるということを学んでいく。Discriminatorもゼロから学習されるので、最初の検知力はゼロ状態からだんだん検知の腕を挙げていく。2つの敵対するニューラルネットワークが切磋琢磨するわけだ。このように説明するのは簡単だが、実際のGANの学習は、綱渡りの学習で、GeneratorとDiscriminatorが同じ強さで成長していくように学習を調整しないと良いGeneratorができない。学習に失敗すると、砂嵐のような画像を出すGeneratorが出来てしまう。

さて、話をディープフェイクに戻す。現在の顔生成の最先端を体験できるのが www.whichfaceisreal.com である。このサイトは、ワシントン大学のJevin West助教 と Carl Bergstrom教授が公開している、ゼロから生成された「この世に存在しない人の顔」と実在の人間の写真を顔を人間が見分けられるかをテストするサイト。ぜひディープフェイクの恐ろしさを体感するためにチャレンジしてほしい。かなりの場合、確信を持って見分けることは難しい。NVIDIA社のStyleGANを使って生成した画像と本当の写真を集めたFFHQ画像データセットから選んだ顔写真を2つ並べている。たとえば以下の2つのうち1つはニセモノ生成画像(上記サイトから引用)。

f:id:YutakaSasaki:20190726134850j:plain:w200
f:id:YutakaSasaki:20190726134845j:plain:w200

あまりに出来がいいので、モンタージュのような技術のように思うかもしれないが、実際は全然違う。ニセモノ画像のどの一部を切り取っても、マッチする元の画像は存在しない。白いキャンバスにGeneratorが顔の絵を描いているのである。これは明らかで、Generatorには、実際の写真画像はまったく見せていない。Generatorは、どう描くとDiscriminatorに見破られるかを学んでいくうちに、見破られないコツを学習して、ホンモノと見分けられない顔画像が描けるようになったのである。

さて、最後にホンモノとニセモノの見分け方があります。顔画像データから学習してい性質上、尤もらしい顔画像を生成するように学習しています。つまり、背景は特定のパターンがないので、ぼやけたり歪んだものになりがちです。背景に明瞭な直線や文字、明らかな風景が写っていれば、それはホンモノです。また、ニセモノ画像の一部に渦を巻いたような不自然なものが出やすいです。しかし、中には、たまたま背景がぼやけた(または単色)のホンモノ写真があります。この場合、背景では見分けられません。このような場合は、髪の毛で判定します。背景にはみ出してる、髪の毛、1本1本がきれいに出ている画像がホンモノです。これは、背景を生成するとき、髪の毛の物理モデルに持っているわけではないので、細い髪の毛1本をきれいに生成できないGANの宿命です。これはほとんど見分けられますが、まれにホンモノ画像の髪の毛もぼやけている場合があり、ニセモノもたまたま変な特徴が出ていない場合は、基本的には見分けられません。ニセモノ画像は、GANの学習の性質上、人物と背景の境界がホンモノよりぼやける傾向があるので、そこで分かるかもしれませんが、ホンモノも少しボケた写真のときは、多くの場合はどちらがホンモノかは分かりません。それぐらい顔画像の生成技術は高くなっています。

ちなみに女性の写真がホンモノ。

SNL2019まもなく

SNL2019がいよいよ明後日に迫りました。

準備は順調です。会場もいい感じで埋まりそうですが、
まだ当日参加も可能です。

Maximilianが講演のタイトルと内容を少し変更して、連想記憶と階層構想の
埋め込みの関係について、何か新しいことを話してくれることにしたようです。

Title: Representation Learning in Symbolic Domains

Abstract: Many domains such as natural language understanding,
information networks, bioinformatics, and the Web are characterized by
problems involving complex relational structures and large amounts
of uncertainty. Representation learning has become an invaluable approach
for making statistical inferences in this setting by allowing us to
learn high-quality models on a large scale. However, while complex
relational data often exhibits latent hierarchical structures, current
embedding methods do not account for this property. This leads not only
to inefficient representations but also to a reduced interpretability of
the embeddings.

In the first part of this talk, I will discuss methods for learning distributed
representations of relational data such as graphs and text. I will show how
these models are related to classic models of associate memory and that a simple
change in training procedure allows them to capture rule-like patterns on
relational data. In the second part of the talk, I will then introduce a novel
approach for learning hierarchical representations by embedding relations into
hyperbolic space. I will discuss how the underlying hyperbolic geometry allows
us to learn parsimonious representations which simultaneously capture hierarchy
and similarity. Furthermore, I will show that hyperbolic embeddings can
outperform Euclidean embeddings significantly on data with latent hierarchies,
both in terms of representation capacity and in terms of generalization ability.

SNL2019

第3回の国際ワークショップ Symbolic-Neural Learning (SNL2019)を7/11-12にお台場・科学未来館で開催します.
https://www.airc.aist.go.jp/snl/snl2019.html

SNL2019の組織委員長は産総研の辻井潤一人工知能研究センター長,プログラム委員長は,同じく産総研の高村大也チームリーダーです.

早期事前登録の締め切りは 6/21 です.予定数を超えると,事前登録の時点でも登録を締め切る場合がありますので,お早めに参加登録ください

この国際会議は,豊田工大と豊田工大シカゴ校,産総研AIRC,理研AIPが共催している日本発のAI分野の国際ワークショップで,今回で3回目になります.

招待講演者も豪華な顔ぶれです.

Maximilian はPoincare/Lorentz Embeddingで有名です.Noahは,説明可能な深層言語学習について講演してくれます.Kristinaは粒度を考慮した文の埋め込みベクトルについて講演します.BERTの論文の著者ですから、BERTの話をしてくれるのではないでしょうか。

この他の招待講演者も幅広く現在活躍中の方をお呼びしています.

基調講演:
Maximilian Nickel (Facebook)
  Geometric Representation Learning in Symbolic Domains
Noah Smith (University of Washington/Allen Institute)
  Rational Recurrences for Empirical Natural Language Processing
Kristina Toutanova (Google)
  Learning and evaluating generalizable vector space representations of texts

招待講演:
・Chenhui Chu(大阪大学
 Visually Grounded Paraphrase Identification
・市瀬 龍太郎(国立情報学研究所
 Knowledge Graph Construction
・今泉 允聡(統計数理研究所
 Generalization Analysis for Mechanism of Deep Neural Networks via Nonparametric Statistics
・David McAllester (豊田工大シカゴ校)
 Rate-Distortion Autoencoding for Unsupervised Machine Translation
・新岡 宏彦(大阪大学
 Bio-Medical Imaging Supported by Deep Learning
・篠﨑 隆宏(東京工業大学
 Automated Development of Deep Neural Network Systems Based on Evolutionary Algorithms
・Karl Stratos (豊田工大シカゴ校)
 Mutual Information Maximization for Simple and Effective Label Induction in Text
・鈴木 潤(東北大学/理研AIP)
 Usability Enhancements to Neural Word Embeddings
・鈴木 大慈東京大学/理研AIP)
 Adaptivity of Deep Learning in Besov Space with Its Connection to Sparse Estimation
・椿 真史(産総研AIRC)
 Deep Learning for Graph-Structured Data: Applications to Drug and Materials Discovery
浮田 宗伯(豊田工業大学
 Image and Video Super-resolution for Learning Visual Representations: Application to Tiny Object Detection
・Matthew Walter (豊田工大シカゴ校)
 Joint Optimization over Robot Motion and Control

組織委員会
◎辻井 潤一(産総研AIRC)
古井 貞煕(豊田工大シカゴ校)
杉山 将 (理研AIP)
八木 康史 (大阪大学データビリティフロンティア機構)
篠田 浩一(東京工業大学・情報理工学院)
松井 知子(統計数理研究所
佐々木 裕(豊田工業大学
David McAllester (豊田工大シカゴ校)
(◎は委員長)

プログラム委員会:
◎高村 大也(産総研AIRC)
荒瀬 由紀(大阪大学
井上 中順(東京工業大学
健太郎東北大学/理研AIP)
三輪 誠(豊田工業大学
持橋 大地(統計数理研究所
Greg Shakhnarovich(豊田工大シカゴ校)
(◎は委員長)

(順不同,敬称略)

2018チューリング賞はニューラルネットの研究者3名に

2018年のチューリング賞ニューラルネットの研究者3名Yoshua Bengio, Geoff Hinton, and Yann LeCunに贈られる.
awards.acm.org

Bengio先生は2017年に名古屋で国際ワークショップのco-chairをやったときに招待講演にお呼びしたことで親近感がある.
大先生なのにソフトなひとあたりで,ワークショップスタートのかなり前の準備中にふらっと会場受付に現れて,昼食の場所を聞いて出かけていかれた.
yutakasasaki.hatenablog.com

深層学習の先駆者たちがチューリング賞をとるのは当然といえば当然.これからもこの分野からは何人かチューリング賞が出るだろう.