お茶情の研究を覗いてみよう
このシリーズでは、情報科学科の学生が行った最先端の研究から、
国際学会で高い評価を得たものを紹介していきます。
第4弾:この顔、誰の顔?
紹介論文
シリーズ第4弾で紹介する研究は、高野紗輝さんが修士課程在学中に行った以下の研究です。
Saki Takano, Akihiro Nakao, Saneyasu Yamaguchi, and Masato Oguchi "Privacy Protective Distributed Machine Learning betweenRich Devices and Edge Servers using Confidence Level," 2022 年 12 月にビッグデータ、知能と計算に関する国際会議DataCom 2022 (https://data-com.org) にて発表し、最優秀論文賞 (The Best Paper Award)(https://www.ocha.ac.jp/news/d012067.html)を受賞。(高野さんが大学院修士2年のとき。)
背景
家電など私たちの生活のさまざまなところでコンピュータが使われるようになり、それらがネットワークでつながって、高度な機能が実現されようとしています。例えば、冷蔵庫がネットワークにつながれば、不足している食材を自動でスマホに知らせてくれるかもしれませんし、エアコンや照明がネットワークにつながれば、帰宅時間に合わせて部屋を快適に用意してくれるかもしれません。さらに、機械学習など先端の技術を組み合わせれば、自動で私たちの行動を学習し、それに合わせたカスタマイズなども可能になるでしょう。
このようなことは、多くの場合、クラウドと呼ばれる高性能なコンピュータの集まりがネットワークの向こう側に用意され、ネットワークを介してそこにデータを送り、それをもとに適切な処理を行うことで可能になっています。私たちが手元に高性能なコンピュータを用意しなくても、ネットワークの向こう側のコンピュータたちがよろしく上手にやってくれるのです。
しかし、このような形でいろいろな製品をつなぎ、ネットワークを介してデータをやり取りする方法には、少なくともふたつの問題点があります。
問題1:データの遅延
ひとつは、データをやり取りする際の遅延です。一般家庭とクラウドに置かれているコンピュータの間には距離があります。その間にデータを通すためには、最新の高速なネットワークを使ってもある程度の時間がかかります。エアコンを制御するために、現在の室温を送る程度であればたいしたことはありませんが、今後、例えばインターホンに映る画像を常時、解析して、不審者を発見したくなったりするでしょう。そのような場合には、それなりの量のデータを送る必要があり、次第にネットワークの遅延は問題になってきます。
さらに深刻なのは、リアルタイムな反応を求められる場合です。例えば、車に搭載されたカメラの映像を処理して、事故につながる場面を検出し、自動でブレーキをかけるといったことを行いたいとします。このような場合、映像を遠くにあるクラウドに送り、その処理を待ってから、車に指示を出すのでは遅過ぎるのです。このようなネットワークの遅延に対応するために、最新のネットワークでは一般家庭とクラウドの間にそれなりの性能を持つコンピュータを配置しています。このコンピュータのことを、ネットワークの専門用語ではエッジサーバと呼びます。
エッジというのは、端っこという意味です。エッジサーバというのは、巨大なインターネットの端っこの一般家庭に近い部分で色々なサービスを行うコンピュータのことです。それに対して、一般家庭で使うネットワークにつながった家電などは、ネットワークの端っこで動作しているものという意味でエッジデバイスと呼ばれます。エッジデバイスでの処理をリアルタイムで高速に行うために、クラウドの手前にエッジサーバを配置して、クラウド本体までアクセスしなくても対応できるようにしているのです。
問題2:プライバシ
いろいろな家電の情報をネットワーク経由でエッジサーバやクラウドに送って処理することのもうひとつの問題点は、プライバシ保護です。例えば、自分の生活スタイルに合わせたエアコンの制御を行いたいとしましょう。それには、室温などの情報に加えて、自分が毎朝、いつ起きて、いつ外出して、いつ戻ってくるのかという情報が必要です。これらの情報をエッジサーバやクラウドに送れば、そのデータをもとに最適なエアコン制御をしてくれそうです。でも、これらのデータは個人情報です。外出時間の情報が外部に漏れれば、その時間を狙って空き巣が入るかもしれません。
このように、高性能なエッジサーバやクラウドを使って高度な処理を行いたいという要望と、自分のプライベートな情報は外部には出したくないという要望は、お互いに相反するものになっています。では、個人情報を外部に出すことなく、高度な処理を行うことはできないのでしょうか。高野さんが取り組んだのはこのような問題です。
高野さんが属する小口研究室はネットワークを専門とする研究室です。小口研究室ではこれまでもネットワークとプライバシの問題を研究してきました。例えば、プライベートな情報を暗号化してエッジサーバやクラウドにデータを置き、準同型暗号という仕組みを使って、暗号化したままプライベートな情報を処理する方法などです。これなら、暗号を解く鍵がない限り、プライベートな情報を外部の人が見ることはできません。しかし、この方法では準同型暗号がサポートしている比較的、簡単な演算以外は容易に行うことができないという問題点があります。それに対して、高野さんはプライベートな情報は手元で処理をすれば良いという方針を立てて研究を行ないました。
スマホの性能
プライベートな情報を外に出すことなく処理する方法として最初に思いつくのは、エッジデバイスで全ての処理を行ってしまうことでしょう。手元だけで対応できるなら個人情報が外に出てしまう心配はありません。もちろん、インターホンのようなエッジデバイスは画像をとることくらいしかできませんから、その画像を処理した上で不審者の発見までするのには無理があります。でも、最近、スマホの性能向上には著しいものがあります。インターホンでは無理でも、スマホを使えばそのようなことは可能かもしれません。
これが実際に可能かどうかを判断するためには、まず、スマホの性能がどのくらいで、どのくらいの処理なら現実的な時間で実行できるのかを把握する必要があります。高野さんが最初に取り組んだのは、そもそもスマホの性能がどのくらいかを測定することでした。
スマホの性能を調べるために使った処理は、顔画像認識です。皆さんはスマホを使って色々な場面で色々な写真を撮っていると思います。その中には家族や友人の顔写真なども多く含まれているでしょう。顔画像認識というのは、それらの顔画像が与えられたときに、それぞれ誰の顔写真かを分類するというタスクです。これができると、例えばスマホの中の写真を写っている人ごとに分類して別のフォルダに整理するといったことが可能になりそうです。また、インターホンに応用すれば、不審者の発見にもつながりそうです。
顔画像認識というのは、機械学習の代表的なタスクです。機械学習のひとつである深層学習については、このシリーズ第2弾「この単語、難しい?」や第3弾「異常事態発生!」でも扱いました。たくさんの顔写真とそれが誰なのかを示すデータを学習すると、未知の顔写真を与えられた時にそれが誰の顔写真なのかを判定してくれるようになります。ここでは学習の中身についてはこれ以上触れませんが、ポイントはこの学習にはそれなりの計算が必要だというところです。そのような計算を実際にエッジサーバとスマホの両方にさせてみて、スマホの性能を把握しようということです。
実験に使用した機械は、学習をする際に有効な並列処理を行う機能を備えたものです。これは、私たちが普段、使っているスマホよりも高性能なものですが、近未来のスマホをイメージして選択しました。一方、比較対象のエッジサーバは、普通に使われているサーバ用のコンピュータです。
両者を性能比較した結果わかったことは、スマホの性能は近未来のものを想定したとしてもエッジサーバの 1/20 程度の性能しかないということです。20 倍の時間をかければエッジサーバと同程度の学習を行うことができなくはありませんが、多くの場合、それだけの時間を待つのは非現実的です。一言でまとめると、現状ではスマホだけで高度な処理を行うには限界があり、何らかの方法でエッジサーバの力を借りる必要があります。
エッジサーバで学習
スマホだけで高度な処理を行うのは難しいことがわかりました。次に高野さんが考えたのは、高性能なエッジサーバの方で時間のかかる計算を済ませ、その結果だけをスマホで使うようにしたらうまくいかないかということです。エッジサーバで良いものを作ることができれば、それを多くの人で使うことができます。エッジサーバでは、それなりの時間がかかったとしても、それに見合う利益があるのです。
そこで、高野さんは次にエッジサーバで学習を行ってみることにしました。エッジサーバにはプライバシに関わるデータは送りたくないので、この学習は一般に公開されている顔写真のみを使って行うことになります。エッジサーバは高性能ですので、多くのデータを使って十分な学習を行うことができます。その結果、70% の精度で誰の写真かを分類できるものを得ることができました。
エッジサーバで学習した結果をスマホに持っていき、そこで顔写真の分類を行なってみると、精度は 62% になりました(図 1)。その内訳を調べてみると、一般的なデータについてはエッジサーバと同じ 70\% の精度を達成しています。しかし、肝心の個人的なデータについてはほとんど分類ができておらず、それが精度を 62% に落としている原因でした。つまり、本来達成したかった個人的なデータの分類はできていないのです。この結果は、学習する際には個人的なデータも使用しないと、望むような結果は得られないことを示しています。
スマホでも学習
スマホで撮った顔写真の分類をしたければ、そのデータも取り込んで学習をする必要があることがわかりました。しかし、エッジサーバにその情報を送るのはプライバシの観点から行いたくありません。そうすると、残る選択肢はスマホで学習をすることになります。ですが、エッジサーバで使っていた大量の(一般的な)顔写真をスマホに送るのは、ネットワークの転送コストを考えても、またスマホの性能やメモリ容量を考えても現実的ではありません。そこで、スマホでは個人的に撮った顔写真のみを使って学習することにしました。学習するデータを個人的に撮った顔写真のみに限ると、スマホ程度の性能でも一定のレベルの学習を行うことができます。
この学習の結果を使って顔写真の分類を行うと、精度は11% になりました(図2)。これはかなり低い数字ですが、その原因は一般的な顔写真の分類ができていないことです。スマホで撮った個人的な顔写真については95% という高い精度で分類をできましたが、学習していないそれ以外の一般的な顔写真については、ことごとく分類に失敗しているのです。一般的な顔写真を扱えなくても、個人的に撮った顔写真の分類ができれば良さそうにも思えますが、そのようなものは多くの場合、新しいデータ、例えば新たな友達の顔写真が入ってきたときに全く対応できなくなるため、実際に使用するのは難しくなります。一般的なデータもある程度は扱える必要があるのです。
両者の結果を統合
スマホでの学習結果は、一般的なデータには弱いことを示していますが、同時に、スマホでも多少の学習なら可能であることを示しています。一方、一般的なデータだけであれば、エッジサーバでの学習結果を利用すれば対応できそうです。そうすると次に考えるべきは、両者の結果を統合することでしょう。一般的な顔写真はエッジサーバで学習したものを用いて分類し、個人的な顔写真はスマホで学習したものを用いて分類するのです。ですが、この方法、思いつくのは簡単ですが、意外と実際に行うのは難しいのです。
分類したい写真が与えられたら、とりあえずはスマホで学習したものとエッジサーバで学習したものの両方にその写真を渡して分類を試みます。両者の結果が出たところで、どちらの結果を採用すれば良いでしょうか。手元にたくさんの顔写真があったとき、どの写真が家族や友達など個人的な写真で、どの写真がそれ以外の一般的な写真なのかは、私たち人間にはすぐに判断できます。しかし、スマホにはその判断はできません。両者の結果が得られた際、何らかの指標で片方を選ばなくてはなりませんが、それを選ぶ基準がないのです。
ここで高野さんは信頼度を使うことを考えました。ふたつの分類結果にはそれぞれ信頼度が付随しています。「この写真は何% の信頼度でこの人の写真だと思う」という答えが返ってくるのです。この信頼度が高い方を選べば、個人的な顔写真についてはスマホの返答を、一般的な顔写真についてはエッジサーバの返答を採用できそうです。
信頼度は、これまでに出てきた精度とは異なります。精度というのは、例えば100 枚の顔画像を与えたときに、何枚の顔画像を正しく分類できたかを示しています。一方、信頼度は 1 枚の顔画像を判定するときに(答えが合っているかどうかに関わらず)どのくらいその答えに自信を持っているかを示しています。スマホとエッジサーバそれぞれが答えを返してきたときに、より自信があると答えた方を採用しようということです。
ところが、この基準で実験をしてみたところ、全体の精度は 34% とかなり低くなってしまいました。信頼度は顔写真によってかなり大きく変動するので、スマホの返答とエッジサーバの返答のどちらが採用されるかは、顔写真によって異なります。上手に個人的なデータについてはスマホの返答、一般的なデータについてはエッジサーバの返答が採用される場合もあります。ですが、多くの場合、うまくいかないのです。その典型的な状況を図3に示しました。
精度が低くなってしまう理由は、ふたつの学習結果の信頼度の基準が異なってしまっていることです。エッジサーバで学習する際には、とても多くのデータを使いますので、広範囲のデータについて公平な判断を下すことができるようになります。図3 の 50%、85% という信頼度は実際の信頼度を反映しています。しかし、スマホで学習する場合は、性能が追いつかないため限られたデータのみを使っています。その結果、全体にとても高い(高過ぎる)信頼度で答えを返すようになります。図3の98%、90% という信頼度は高すぎるのです。学習しているデータが少ないので世界が複雑であることを理解できず、自分の学習した範囲の知識のみを使って判断を下すため、大海を知らない井の中の蛙になり、やたらと高い自信を示すようになるのです。
このようにして得られたふたつの結果から信頼度の高い方を採用すると、個人的な顔写真でも一般的な顔写真でも、スマホの返答の方ばかりが採用されるようになります。その結果、一般的な顔写真の分類に失敗することが多くなり、全体の精度が 34% まで落ちてしまうのです。
一般のデータを加えて学習する
ここでの問題は、スマホで個人的な顔写真を学習する際、一般的な顔写真のデータを全く考慮できていないところに起因しています。より多様な顔写真を使って学習できれば、より公平な判断ができるようになりますが、スマホの性能を考えると大量の一般のデータをスマホで学習するのには無理があります。そこで高野さんは、少量の一般のデータを加えてみようと考えました。スマホでの学習は、個人的な顔写真をうまく扱えるようにするのに有効です。その利点を損なわないまま、少しだけ大海の厳しさを教えてあげれば、蛙の自信過剰を直せるのではないかということです。
少量の一般のデータを加えて学習すると、全体の精度は 66% という比較的、良い結果になりました。信頼度は顔写真によって変動しますが、典型的な状況を図 4 に示しました。エッジサーバの返答の信頼度は前と同じですが、スマホの返答の信頼度が適度に下がっています。そのため、個人的な顔写真については相変わらずスマホの返答が採用されることがほとんどですが、一般的な顔写真についてはエッジサーバの返答を採用できることが多くなりました。両方の結果の良いところをしっかりと取ることができているのです。
この結果は、数字的にはもともとエッジサーバだけで学習していたときに得られていた 62% の精度と大きくは違いません。しかし、エッジサーバだけで学習していたときは、個人的な顔写真についてはほとんど分類に失敗していたのに対して、今回の結果は個人的な顔写真についても分類できています。これは、スマホ側に一般のデータを少量、学習させることで、一般のデータが来たときに「何かおかしい」と気がついて信頼度を下げられるようになり、その結果、エッジサーバの返答を採用できるようになったことによるものです。
スマホの未来
どの程度、一般のデータを加えて学習したら良いのかは試行錯誤が必要です。そのほかにも、スマホやエッジサーバでどの程度の学習をするのかによっても結果は変化してきます。今回の研究の成果は、両者をどのくらいの割合で採用したら良いかではなく、そもそも両者を結びつけてあげるとより良い結果が得られることを示したところにあります。実際、これまでの研究はデータをエッジサーバやクラウドに送り、そこで処理をするものがほとんどでした。そもそもスマホは性能が低いので、そこで機械学習などの複雑な計算をさせようとは誰も思わなかったのです。高野さんの研究はそこに、スマホでもある程度、高度な計算を行うことができるという新たな方向性を示したのです。
一度、新しい方向性が示されると、それをベースにして多くの研究が生まれます。高野さん自身も、この研究の後、より発展させた方法について研究を続けています。例えば、今回の研究ではエッジサーバとスマホの学習は全く独立に行いました。ですが、スマホで学習する際には 0 から始めるのではなく、エッジサーバで学習した状態から始めて、その上に個人的なデータを学習するようにすれば、どちらのデータであってもきちんと分類できるものが作れるかもしれません。このようなアイディアをひとつひとつ実験し、確認していくことで、プライバシを考慮しつつ、より精度の高い分類が可能になっていきます。将来、個人情報の流出を気にすることなく、手元のスマホで写真の分類やエアコン管理、インターホンの監視などを自動で行なってくれる日がやってくるかもしれません。
バックナンバー
問い合わせ先
大学へのお問合せはこちらをご覧ください〒112-8610 東京都文京区大塚2-1-1
TEL : 03-5978-5704
FAX : 03-5978-5705
責任者 : 情報科学科HP運営委員会 伊藤貴之
※このウェブサイトは情報科学科の学生によって制作されています。