2018年5月22日(火)~23日(水)にザ・プリンス・パークタワー東京で行われたde:code 2018に、マイクロソフトの最新の機械学習に関する動向を知ろうと参加してきました。
ランチはなだ万と今半
まず一番のポイントは何と言っても食事。どのカンファレンスよりもランチで配られるお弁当が美味しい。今回、初日は「なだ万」で2日目は「今半」の折り詰めという定価8万円の参加費に恥じない豪華さ。
昨年11月のConnect 2017でも、無料カンファレンスにもかかわらずランチにお弁当が配られ、その時はたしか「まい泉」のトンカツ弁当でした。
また、今回はEXPO会場で、僕が愛してやまないミスタードーナッツとネスカフェアンバサダーで有名なネスレが、スイーツとコーヒーをリフレッシュメントとして無償提供。濃厚なセッション受講で疲弊しきった脳みそもリフレッシュして次のセッションへ。
食事の素晴らしさからいえば、マイクロソフト(有償)> マイクロソフト(無償)> IBM(無償)>>>(超えられない壁)>>> 東洋経済新報社(有償)が僕的ランキングになります。マイクロソフトは、参加エンジニアの健康を損なわないよう来年からはRIZAPかタニタをタイアップ先に入れるべきだと思います。
まじめな総評
本イベントはマイクロソフトが主催する有料(定価8万円)のテックカンファレンスです。直前にシアトルであったBuild 2018で公開された新技術や、今後の開発ロードマップを中心に各種製品やサービスのアップデート紹介、日本国内企業による事例などの発表、本国から招いたエキスパートによる少人数ディスカッションなどが行われます。
うちの会社からは例年10人前後が参加していますが、今回は5月11日にあったQiita × Microsoft 共催MeetUpというイベントで招待券があたりまして、ありがたく参加させていただきました。スポンサードしてくださったマイクロソフトに感謝です。
基調講演の中で伊藤かつら常務が「お客様の成功がマイクロソフトの成功に通ず」とおっしゃっていたように、たしかにマイクロソフトは変わったように見えます。
昨年単身赴任を終え姫路本社から戻ってきて、業後にいろいろな勉強会に参加させてもらっていますが、ここ半年くらいでマイクロソフト協賛の勉強会が増えてきてませんか? テックコミュニティ内で徐々にマイクロソフトがプレゼンスを上げてきているような…
会場スペースの貸し出しなどテックコミュニティをリソース面から支援し、無料のハンズオンや事例発表会を単独またはコミュニティやテックカンパニーと共催し、多くの技術者と情報を共有することに注力しているように見えます。まさに「お客様(=技術者)の成功がマイクロソフトの成功に通じる」を実践している気がします。僕は、30年近いone of Apple fanboys and girlsなのですが、悔しいことに最近では徐々にマイクロソフトのファンにもなりつつあります。
今回は機械学習を中心に、2日間で基調講演含めて12のセッションに参加しましたが、特に少人数(40~60人)でラウンドテーブルを囲んでディスカッションを行う、「チョークトーク」というセッションで多くの有益な情報を入手できたと思います。英語のものと日本語のもの2つに参加しましたが、どちらも参加者が積極的に質問や意見を出し合っており、非常に実りの多いセッションでした。特に英語の方は、USから来た機械学習のエキスパートと直接話ができるチャンスであり、学習データの収集について、今まで考えたこともなかった「データ自身の持つ恣意性」という観点から非常に大切なことを教わったように思います。
de:codeへの参加は初めてですが、同じようなイベントはIBMなどのベンダー主催、翔泳社主催のデブサミ、夜のコミュニティ勉強会など東京勤務なら枚挙にいとまがありません。それでも、2千名を超えるエンジニアが一堂に会する熱気にあてられ、登壇者や他の参加者とのレベルの差を肌で感じながら、まだまだ知らないことが多すぎると自分の立ち位置を確認できる2日間を過ごすことは、謙虚に自分の無力さを受け止められるという特別な意味があったように思います。
井の中の蛙大海に溺れる(^^;
【1日目】
基調講演
4会場をぶち抜きで800~1000名入れるキャパシティの基調講演会場が満席です。開演1時間前の8時半過ぎに会場入りするも、すでに座席の1/3は埋まっていました。内容は、伊藤かつら常務からマイクロソフトのミッションや取り組みについての話から始まります。Windows ❤️ all your devicesと熱烈アピール。
Xamarinやるようになってからこれは本当に実感します。ここ一年くらい、開発は主にiMac上のVisual Studio for Macで、Linux、iOS、Android向けのマルチプラットフォーム開発。あっ、一応UWPにも対応してますよ!
クラウド担当のJulia White副社長からは、クラウドとAIへの積極的な取り組みと新機能やサービスのアップデート、開発ツール担当のJulia Liuson副社長からは、Visual Studio関連のツール群のマルチプラットフォーム対応、Mixed Reality担当のLorraine Bardeenジェネラルマネージャーからは、HoloLensを中心としたMixed Realityへの取り組みと事例の紹介。
サブテーマとして掲げられていたWomen in technologyに準じて、この基調講演の登壇者もデモンストレーターもすべて女性だけで構成されていました。画像認識のデモでは昨年のConnect以降パイナップルを使うことに決めたみたいで、約半年のネタ熟成を経て再びパイナッポー。
このデモの後、ちょまどさんもデモンストレーターとして登場していました。緊張していたのか少しキョドってましたが、動くちょまどさんを見るのは初めてだったので、ひょっとすると普段通りだったのかもしれません。ただ、ネタの流れ的にはパイナッポーを持って出てき欲しかった。6月11日のIBM Think Japanでパイナッポーを持って出てきてくれるのではないかと密かに+(0゚・∀・) + ワクテカ +しています😅
最後に出てきた平野社長が、「ツイッターで平野が女装して出てきたら面白いというのがありましたが、すいません準備してませんでした。」と謝って会場を沸かせました。僕がツイッターを始めた10年くらいまえに、アメリカでもWomen in technologyの流れがあったように記憶してますし、最近のコミュニティには東京Node学園に対するNode女学園、IoTLTやBluemixの女子部など多彩なWomen in technologyなコミュニティが存在しています。今後マイクロソフトがテック業界の女性にどのようなアプローチや支援をしていくのか注目です。
Cognitive Services 最新情報 @ Build 2018 を一気にチェックする50分!
今までは、事前構築済みのCognitive Serviceと一から構築するMachine Learning Serviceという2系統の機械学習をAzure上に用意していました。今回のBuild 2018で、それにプラスしてカスタマイズ可能なCognitive Serviceを提供すると発表がありました。以前、Azure Cognitive ServiceのBing Speech APIとLUISの2つを利用し、機械を音声で制御する実験システムを構築しましたが、カスタマイズできる部分が非常に少なく広がりを持てませんでした。今回のカスタマイズ可能なCognitive Serviceを利用すると、もう少し固有名詞への対応や業界用語の登録など痒いところに手がどどくようになるかもしれません。そのほかにも、画像認識、顔認識、検索機能など多くのサービスに変更・強化が加えられたようです。印象としては、特に自然言語処理に関連する強化が目立ったように思います。やはり時代はボイスなのか…
The latest Deep Neural Network case study - PII reduction run on Edge, Sequence Intent Classification using Neural Networks
USAから機械学習のエキスパートであるOlga Liakhovichさんを招いて、PII(Personally Identifiable Information:個人を識別可能な情報)をどうやって取り除くかという点についての講演からスタートします。ドイツの自動車メーカーにおいて、センサーが取得した画像に歩行者の顔や他の車のナンバープレートなどが映っていると(GDPRのからみ?)そのデータを活用できないそうです。そのためセンサーが捉えた画像から顔やナンバーを検知してマスクする処理をエッジ側で開発したが、TensorFlowなどの著名なライブラリを利用しても、センサー画像の解像度が粗くて「顔だけ」を検知することができなかった。しかし、人は検知できたので、その検知領域の上部20%部分を顔としてマスクすることで対応したとのこと。
次に、マルウェアを検知するためにディープラーニングを使用して、使われているAPIの種類や呼出し順序、頻度などから類推し検知を行ったそうです。これはコードの呼び出すAPIの種類や順序といった振る舞いをデータ化することによって、ディープラーニングで処理可能な形にしたようです。センサー画像のマスキングは機械学習で処理した後工程で、マルウェア検知では処理する前工程で各々データに対して適切な加工を行うことで実現しているようです。
機械学習のプロジェクトでは往々にしてこのような前処理、後処理があってこそ効果を発揮するのかもしれません。
機械学習に基づく音響解析や画像認識による産業応用
国立研究開発法人 産業技術総合研究所の坂無英徳氏からヘルスケアおよび社会インフラ維持に機械学習を利用する事例の講演がありました。まず最初に、乳がんの判定には従来X線撮影によるマンモグラフィーが用いられてきましたが、乳腺の多い若い人たちは乳腺が白く映り込みすぎるため、その画像から乳がんの兆候を発見するには熟練が必要でした。そこでエコーを用いて撮影することで乳腺の影響をなくしましたが、エコー画像の読み取りにもやはり熟練が必要でした。そこで、エコー画像を機械学習で処理して、乳がんの兆候があるか否かを検知できるようすることにしました。
また、音響測定によるトンネルの壁の崩落予兆なども、ハンマーでたたいた音を機械学習で処理して異常があるか否かを検知するようにしたそうです。このような異常検知の機械学習において、異常とは何かを定義することは難しいそうです。なぜなら異常値のサンプル数がそもそも少ないため十分に「異常」を学習できません。そこで、「異常」を学習するのではなく「正常」を学習し、そこから離れているものを「異常」として検知します。「正常」なサンプルであれば、たくさん学習データとして提供できるはずです。もちろん、正常な学習データから作り上げる機械学習モデルが処理した結果が、どれくらい離れた値を示せば「異常」とするかは考慮する必要があります。この「異常検知」、「予兆検知」という分野は僕にとっても今後取り組みがいのある分野と思われます。
Latest trends in Machine Learning: Avoiding Bias, Reinforcement Learning and Meta-Learning
再びUSからOlgaさんを迎えてのチョークトークセッションです。対象とする技術者レベル400と最高レベルで、なおかつ英語(通訳あり)というハードルの高そうなセッションでしたが、実際には細かなアルゴリズムの詳細や難解な数式が出てくるようなものではなく十分議論について行けました。
本セッションでは、彼女が参加したNIPSという機械学習の学会に上ったテーマの中で、彼女が共有したいと感じたテーマを3つ上げ議論を始めましたが、最初の「データのバイアス」というテーマが白熱したので、後の2つのテーマは流れてしまいました。しかし、議論が白熱した結果なので、それはそれで良かったのではないかと思います。
機械学習に投入される学習データは、それ自身が何らかの恣意的なバイアスをもっており、そこから得られる類推もまた恣意的であるという衝撃的なお題。たとえば、グーグルでCEOを画像検索すると白人男性ばかりである(2017年12月の学会データなので今検索すると少し違う)。これはCEO=男性、アングロサクソンという思い込みで学習データが偏っているからかもしれない。他にも住宅ローンの審査において低学歴だと通らないとか、歴史的・文化的な思い込みによって、本来無関係であるはずなのに特徴点とされている偏った学習データから生まれる偏った類推に対する問題提起がありました。
このような考え方や見方は、今までに聞いたことも考慮したこともなく、とても大事な視点であると感じました。グーグルのように不特定多数に公開されるパブリックである意味社会インフラ的なサービスと、もっとドメインが狭く公開範囲も狭い企業内のチャットボットや画像検索システムでは当然異なるのですが、それでもそのデータに思い込みや恣意性はないか?あっても許される範囲で利用されるサービスなのかという問いかけは倫理的・法的な側面からも大事だと思います。
パーティ
無表情な銀髪のDJおねぇさんが奏でるビートに乗って飲み・食いしました。DJおねぇさんが時々ニヒルにうっすら微笑むとキュンときます。ちなみに食事はどれもこれもおいしかったです。ごちそうさまでした。
【2日目】
Human Centric (人中心の) AI とは何か:法的側面から検証
機械学習の、法律面や倫理面における知識も仕入れておかないと、今後痛い目にあう可能性が高いなと感じて選択していたセッション。前日の、Olgaさんとのチョークトークセッションを経てますますその思いを強くしました。本セッションでは、機械学習に利用される学習データや類推された結果などの利用方法について、国際的な8原則の合意がG7の高松会合で2016年に採択されており、ここでは制限するだけではなくてデータの国際的な流通に向けての枠組みについても協議されたことが紹介されました。
AI開発に関する8原則の合意は、その後2017年11月にOECDに日本初のガイドライン案として持ち込まれています。そのほかにもアシロマ会議などでも同様な議論が進んでおり倫理面でのガイドライン作りが進んでいます。一方でGDPRのようなデータ流通の規則化も進み始めており、プライバシーを保護しつつデータの自由な移動を阻害しない枠組みが求められていると言えます。
Azure Machine Learning services で実現する Deep Learning によるテキスト分類
テキストのディープラーニングというとRNNというのが一般的。しかし、ここはあえてCNNを使い、イメージのクラスタリングをするがごとく文字列をクラスタリングしてみようとする試みについて、株式会社PLAN-Bの得上 竜一さんが実演。性能を上げるために、CNNの中間層に3文字を1文字ずつ進める層と2文字を1文字ずつ進める層を入れて層を深くしてみることで精度が上がって行きます。
実際にプロトタイプ的なやっつけのモデルをチューニングしながら、徐々に使い物になるモデルにリファインしていく流れを、Azure Machine Learning Workbenchを使いながら、ポイントを押さえて説明してくれたため、非常に分かりやすくモデルを進化させていく過程を理解できました。
それにしてもCNNでこのような分類ができるとは目から鱗。たしかにこれなら報告書やメール文面のネガポジ分類程度なら「私やり方も知ってますよ」と言える。こういった創意工夫により、自分の卓上のPCでもディープラーニングを使った実用的なシステムを作れる可能性があるという知識を得たのは大きい。GPUがないと何もできないわけじゃない。
今年も最新事例のオンパレード!APIもAIもAgileにAzureへ
この時間帯に聞きたい講演がなかったものの、「今半」のお弁当をもらうためにはどこかの会場に潜り込む必要があるということでやむを得ず。FIXERという会社は、金融機関向けのクラウドサービスを開発している会社のようです。近年ではフィンテック企業とのインターフェースのために銀行にAPI公開が求められていますが、それら企業のアプリが口座データを銀行オンラインシステムに直接API経由でアクセスするとなると、トランザクション量の想定も困難であり業務に影響を与える可能性が高くなります。そのため、API公開はクラウド側で行ってAPIアクセスを受け付け、銀行オンラインシステムと分離します。さらに口座データについては、Azure Stackを利用して勘定DBのレプリカを銀行内に公開API用として作成し、クラウド側からオンプレミスの勘定DBのコピーであるAzure Stackにアクセスすることで取得します。これでAPI利用もDBアクセスも分離されて保護されます。
仕掛けとしては従来から銀行が持っていた対外系システムの構造をクラウドに一部移設しただけなので、アーキテクチャー的には目新しさはありません。対外系の持つ勘定DBレプリカの上にAzure Stackをかぶせた感じ。とりあえず、お昼ごはんの今半はおいしくいただきました。
初心者限定。これから機械学習プロジェクトをはじめたいあなたと語るプロジェクト成功率を上げるコツ
マイクロソフトの畠山氏と藤本氏の司会によるチョークトークセッション。主に機械学習を学んではいるけれどまだプロジェクトとして走らせたことがない技術者に向けて、プロジェクト運営の勘どころを理解してもらうためのディスカッションです。Olgaさんとのチョークトークと同じ部屋で、同じラウンドテーブルに20名前後が着席し、20名前後はオブザーバー席、さらに20名が立ち見という状況で総勢60名程度が参加。
今回も議論は活発で学習データの量は?万なの?十万なの?百万なの?という話題から始まって、正解ラベルは誰がどうつけるのかなどの一般的な議論から徐々に濃い内容に。過学習という話になったとき、私から製造業が製品に音声操作を乗せたとき、「動け」といってうごかなければそれは「不具合」扱いされる。画面の実行ボタンをクリックしても反応しないのと一緒。だから過学習っぽく作らざるを得ない状況があるという話をしました。
この部分について、二つのアドバイスをいただきました。一つは、音声だけに頼ることはまだできない。そこで認識結果の候補を表示してどれですか?と選択をGUIで選ばせるような代替プランを用意してはどうか。また、ビジネスドメインによっては8割の認識で喜ばれることもある。例えば手に障害があって字が書けない人が口頭で話したことをテキストに起こすことができるなら、それが僕たち健常者にとって「8割しか」なかったとしても、今まで文字に残すことができなかった人にとっては「8割も」文字にのこせることになる。
ドメインの設定によって解決することもあるというもう一つのアドバイスもいただきました。あとは身もふたもないことだが、音声認識なんてそんなものということが社会の一般常識になるように教育していくとか。本当に身も蓋もないけれど、こういう「周知」させるというアクティビティも実は地味に大事なのではないかと思った次第。
また、機械学習プロジェクトを始めたとして、データの準備にかかる期間とモデル構築にかかる期間は竹中工務店の例ではどれくらいだったかをお伺いしたところ、データの準備に2か月、モデル構築は1週間という回答をいただきました。マイクロソフトのエキスパートの力を借りるとはいえ、モデル構築に1週間というのは驚きました。逆に言えば、そのレベルのスピード感で世の中の機械学習プロジェクトは動いているのかと、一瞬気が遠くなりました。
ただこれには裏があって、モデルを一から構築しているのではなく出来合いのモデルを一部カスタマイズして使う転移学習(Transfer Learning)という手法をつかっているので学習させるデータ量も少な目で、モデル構築にかかわる期間も短めで、精度を出すためのパラメーターチューニングも少な目というおいしいプロジェクト進行を享受できる仕掛けらしいです。
そのほかにも異常検知に関するテーマの中で、この3日間に壊れる可能性は?などの推測が必要とされるケースがありますが、この「今から何日以内に」という部分は短ければ短いほどテクニカル的には楽らしいです。一般的に、ビジネスサイドとしては保守員を回らせるスケジュール上、この「1か月の間に」のような比較的長いスパンで考えたいはずです。こういうテクニカル面と運用面で異なる要望を持つときの落としどころについてお伺いしたところ、できるだけビジネス面の要望を見据えた上でテクニカル的に無理がないポイントを見つけることが大事との回答をいただきました。あくまでも運用・ビジネスサイドのやりたいコトがあって、それをできるだけ実現するためのテクニカルサイドというのが徹底している感じです。
また、異常検知では、学習モデルは常に最新の履歴を差分学習して最新の状態になっておくことが望ましいとのことです。自分が思うに、そのためにはアプリケーションとモデル部分はプラグ可能な構造にしておかなくてはならず、最新学習モデルをデプロイするとすぐに新しいものが利用されるような運用が必要でしょう。
またモデルのテストという面からは、利用データを学習用、検証用、テスト用の3種類に分けて利用し、過度に学習が行きすぎていないかを気にかけておく必要があるとのことです。このあたりは機械学習におけるデータ利用の基本通りですが、その基本をおろそかにしないことが大事らしい。他にも細かな質問や意見がありとても有意義で楽しい時間でした。Olgaさんとこちらのふたつのチョークトークに出るだけで元が取れた気がします。(招待券で参加してるので元手はゼロですが…)
試作で止まらないための チャット Bot 開発
多くのチャットボットの開発がPoCを超えられず、本番リリースにたどり着けていないそうです。このセッションでは、JTBとNAVITIMEの連携による「TripJapan」という訪日客向けのスマホアプリ開発におけるチャットボットの役割と、いかにしてPoCを乗り越えてリリースにこぎつけ、そしていまバージョンアップに向けて進んでいるかという話を伺いました。
チャットボットの開発にはPoCを超えるために、要件定義→設計→実装というステップだけではなく、会話フロー定義、言語理解定義という従来のシステム開発にはないステップを踏まなければならないそうです。ここに力を取られすぎたりこだわりすぎたりすることでPoCを超えるための開発が大掛かりなものになってしまう。そこで、大掛かりにならないよう既存のフレームワークを利用して自分たちの業務ドメインだけに的を絞って作業できるような環境を用意することが大事とのこと。
現場写真を有効活用せよ〜 Deep Learning と Azure ML Services で挑む竹中工務店の働き方改革
竹中工務店の高井氏とマイクロソフトの藤本氏が、建築現場で撮影した写真を工程ごとに分類する作業を従来の人手作業から機械学習による自動分類に移行して生産性を上げた事例を発表されました。写真の分類といってもその量が半端なく、2002年ころに1平米あたり1枚だったものが、現在1平米あたり10枚と10倍に膨れ上がっているそうです。床面積1平米あたり10枚なので年間の建築延べ床面積で掛け算すると1億枚以上の写真が年間撮影され「手作業で」分類されており非常に負荷の高い仕事になっているそうです。
これを機械学習で自動的に工程ごとに19クラスに分類しました。精度としては90%であり悪くはない数字が出ています。手作業での分類がそもそも100%正確だったかということも疑問ですし。この案件では転移学習を利用しており、一からモデルを作るのではなく既存のモデルを流用して竹中工務店向けに出力層をまずカスタマイズ、これで一度走らせて初期性能を睨みつつデータのクレンジング(偏ったデータを除外するなど)を行い、エポックを10回から20回に増やしてみたり、学習率を小さくしていくなどの段階的なチューニングによって90%の精度を達成したそうです。
収集したデータは約1万件。それを学習データ、検証データ、テストデータに分けて利用。データの準備に2か月、モデル構築は1週間で終えたそうです。早く小さく作って結果を検証し次につなげるというAgile的なスタイルで進めたが、ユーザーである竹中工務店側もこのスピード感にはかなり戸惑ったとのことです。しかし、竹中工務店の高井氏は、もし皆さんの会社で「AI使って何かやってくれ」と言われたらそれはチャンスです、まよわず手を挙げて飛び込んでくださいと参加者をけしかけていました。なんだか聞いていて鉄腕ダッシュのグリル厄介で使われている「噛まれたらチャンス!」を思い出して内心大笑いしてました。
コンテンツ/文書をより探しやすくするための Search x AI - Cognitive Search
マイクロソフトの畠山氏から、Azureに新しく加わった検索エンジンCognitive Searchの紹介。従来の検索エンジンとの違いはメタデータの自動生成。検索エンジンは様々なフォーマットの文書ファイルを読み取ってテキスト分割し検索ワードを作り出す。同様にCognitive Searchでは文書画像をOCR認識してテキスト化し検索ワードを作り出し、写真などからは写っているものをシーンとしてテキスト化して検索ワードを作り出し、動画も同様にシーンとして内容をテキスト化して検索ワードを作り出す。このような機能によって企業内の様々なデータを検索するためのエンジンがデータの種類を問わずに作れる。しかもメタデータの作成をCognitive Serviceが自動的に行ってくれる。ちょっと便利じゃないと聞いてて思ったのですが、正直最後の方は意識が飛びかけてました…
さすがに2日間連続で、機械学習関連のセッションを聴き続けていると最後は脳死状態でした。時間割がかぶって参加できなかったセッションの動画や資料もアップされたので、時間を見つけて視聴しようと思います。