【ふぇろっそ】連合学習でできることってなに?
こんにちは。Rosso AI部の中の人です。
弊社(とその界隈?)で、『連合学習を盛り上げていこう!』と思いつつ、いつになっても盛り上がる気配を全然見せない(ほんとかな?)ことに危機感を覚えつつ、それなら定期的に連合学習の記事を書いて何ができるのか紹介していこう!というお話になりました。
社内にも相談して、「そもそも定期的にブログ記事書けるほど連合学習ってネタあるの?」というツッコミも戴いたのですが、てかAIなんていくらでもネタあるんだし、そこに連合学習の要素を加えるだけならいくらでもネタくらいあるっしょ!と反論しつつ(??)、まずはそれほど力加減を加えない程度に少しずつ連合学習の紹介をしていこうと考えています。
一回目の今回は、そもそも連合学習を使うと何ができるの?という基本的な紹介をしていこうと思います。
そもそも連合学習って何さ!?
それ以前に、連合学習なんて名前さえも聞いたことない!という方も間違えなくいらっしゃると思うので、改めて連合学習が何であるのか?確認しようと思います。
従来のAI学習方法
まずは上図の左側。従来のAI開発は、AIを学習させるためのデータをデータセンターに集めるところから始めるかと思います。「AI開発なんて所詮データを集めてなんぼのものだ!」というのは事実としてあるわけでして、逆にデータが少ないとうまいこと学習が進まなかったりします。それでも学習データ数がなかなか集まらないことは珍しい話ではなく、そしたら学習データをうまいこと加工して、うまいこと水増し=データオーギュメンテーションなどを行うわけですね。
ところが、莫大な量の学習用データをサーバーに集める必要がなく、さらにはデータオーギュメンテーションも不要にさえしかねない将来性を兼ね備えたAIの学習方法があったりします。
それが、連合学習ということですね!
連合学習の学習方法
上図の右側が連合学習の仕組みなります。
この例では、4拠点(拠点A、B、C、D)でAIシステム(例えば異常検知システム)が常時稼働しているとします。このAIシステムを稼働させるためには、当然予めAIのモデルを学習させておく必要があるわけです。そのために必要な学習用データは各4拠点(拠点A、B、C、D)に存在するとしましょう。
さて、この学習用データですが、『拠点より外部に持ち出すことは絶対にできません!』という話だった場合はどうでしょう? 外部に持ち出せない、即ちデータセンターへさえそのデータを持ち込むことができないということになります。
連合学習はこの課題を解決するための秘策でもあります。
なぜなら連合学習は、データセンターにデータを集めて学習させるのではなく、データは各拠点に置きながら拠点内でAIモデルを学習させ、その学習済みAIモデルを中央に集めて共有するという仕組みだからです。
連合学習のポイント
学習用データはデータセンターに集めず、AIモデルは各拠点内で学習させる
中央のサーバーに集めるのは学習用データではなく、各拠点内で学習させたAIモデル
中央のサーバーに集められたAIモデルは、その場で平均化処理(aggregate)が行われ、各拠点へ平均化されたAIモデルが返されます。
返ってきたAIモデルを再び各拠点内で学習を行った後、また中央サーバーへAIモデルを集めて平均化処理を行う。
これを何度か繰り返すことで、連合学習が進んでいくということになります。
この図の例では4拠点のみですが、さらに拠点が増えたらどうでしょうか? 100拠点、1000拠点……10000拠点と増えていったら???
当然拠点の数だけデータがあるはずで、それだけのデータをサーバーに集めることなく、AIの学習を進めることができる。
これだけでも夢のお話だと思いませんか?
で、結局何ができるの?
そこまではわかった! だから結局なにができるの!?
などという声もそろそろ聞こえてきそうなので、具体的にどんなことができるのかもう少しだけ紹介しようと思います。
下の怪しい図(?)をご覧ください。
こちらの図は通常の連合学習とは少し毛色が違う分散型の連合学習(Decentralized)の仕組みを紹介したデモになりますが、行っていることは通常の連合学習とおよそ変わらないのでこちらを例とさせていただきます。
(ちなみに画像の元ネタはこちらの論文のコードとなります。なぜこのようなデザインになったかについては私からは絶対にノーコメントで!)
こちらのデモで解いてるタスクは、皆さんご存知のMNISTです。0から9までの数値画像の分類問題ですね。
見ての通り、3拠点(MELCHIOR、BALTHASAR、CASPER)で学習を行い、それを連合学習で進めているわけですが、実は3拠点で所有しているデータがそれぞれ全く別物だったりします。
CASPER: 0と1と2のデータのみ
BALTHASAR: 3と4と5のデータのみ
MELCHIOR: 6と7と8と9のデータのみ
つまり、上の3拠点はひとつも被ったデータを持っていません。
それでも右側のグラフの動画のとおり、自分が持っていないデータも通信を行いながら学習を行うことで、しっかり画像分類できるよう学習されているわけです。
もちろんMNISTというだけあって、非常に簡単なタスクというのもあります。が、こちらの論文は既に4年前の論文であり、今はさらに難しいタスクでも連合学習でうまくいくよう研究が日々重ねられています。
まだまだ続くよどこまでも
連合学習の魅力が少しでも伝わりましたでしょうか?
え、まだ全然伝わってないですか???
こんな具合に少しずつ連合学習の情報を共有できたらと思います。
ちなみに質問を受けましたので。タイトルの『ふぇろっそ』とは、連合学習=Federated Learning に弊社名を組み合わせた造語です。というのを踏まえ、これからも本当に無事定期連載なんてできるのか!??
最後に、株式会社Rosso AI部では、連合学習の相談も随時承っております。 こちらから、ご一報いただけると幸いです。