« 第4のはなし(1) | トップページ

2017年4月 4日 (火)

第4のはなし(2)

ちかごろはハイボール愛好者が増えたのか、居酒屋どころかファミリーレストランにまで「ハイボール」メニューがあって驚くことがある。蒸留酒ならではの飲み口で、ビールなんかより却ってすっきりした感じがあっていいのかも知れない。もっとも、多くの店では分量を、意図的にかそうでなくかは知らないが、間違っているのか、どうにも薄すぎる「ハイボール」になっている。

▽ むかし連れて行かれた、おねーちゃんのいる場末(?)のバーの焼酎ほどではないとは思うんだけれども、家で作ればもうちょっと飲みでがあるものが飲めるわけで、ちょっとばかり納得がいかない。
 さて、人工知能における「蒸留」の話のつづきから。

■ 近年の機械学習ブーム(?)は、ディープラーニングの方法の改善(たぶん特に畳み込みの処理)で一定の成果が見いだされたことに発端がある。
 機械学習は乱暴にいえば要するに、高校数学で習った行列演算みたいなものだ。
 ベクトルに対して行列をかけると(次元を合わせる必要はあるが)、別のベクトルがでてくることを覚えておられるだろうか。一次変換とか、(もうちょっと進んで)アフィン変換とか言われるこの変換において、行列の要素を変数(xやy…)にしておいて、与えられた入力ベクトルに対して出力ベクトルが希望したものになるようにxやyを「調整して」やる。
 この調整をいくつもの入力ベクトルに対する希望出力で行ってやると、いつの間にか、いままで入力したことのない入力ベクトルに対しても、対応する出力が希望するものに近くなっている、というのを期待するのが、要するに「機械学習」というものだ(実は出力の段階で、もうちょっとだけ処理があるので、このアナロジーは正確ではない)。

■ この行列演算「っぽいもの」を1回だけでなく、何度もやってやる。入力ベクトルに3つや4つ、あるいはそれ以上の行列を使って出力ベクトルを得るようにしておき、与えられたサンプルの入力に対して、希望する出力の情報が出るように、各段階の行列の要素などのパラメータを「調整」する。
 このように多数の段階を経ることで学習が「深く(ディープに)」なるので、ディープラーニング、というわけである。いささか乱暴な説明ではあるが、おおまかなイメージはそんな感じのものである。

■ 話が初っぱなからそれたが、「蒸留」である。
 ディープラーニングの学習モデルが本当に必要なのか、と検証した人がいる(G. Urban et.al, “Do Deep Convolutional Nets Really Need to be Deep (Or Even Convolutional) ?”,https://arxiv.org/pdf/1603.05691v2.pdf)。結論部では、単層のネットワークでは十分な成果が得られなかったとしつつ、

We do, however, see evidence that model compression allows accurate models to be trained on CIFAR-10 that are shallower and have fewer convolutional layers than the deep convolutional architectures needed to learn high-accuracy models from the original 1-hot hard-target training data.
(著者らは、しかしながら、モデル圧縮により、もともとの1ホットハードターゲット学習データから、高精度なモデルが学習するために必要な、ディープな畳み込みアーキテクチャのネットワークよりも浅く(shallower)、より少ない畳み込みレイヤーCIFER-10上で十分精度あるモデルが学習可能である証左を見いだした。)

としている。
 何をしたかというと、

(1)ある学習済みモデルXが与えられたときに、その学習済みモデルXにサンプルのベクトルv1,v2,…を入力して、それぞれに対する出力w1,w2…を得る。
(2)比較的「浅い」ネットワークのモデルYに、同じサンプルのベクトルv1,v2,…を入力し、その出力が、学習済みモデルXと同じになるように、モデルYを調整する、

ということをしたのである。学習済みモデルXをそのまま「教師」として使って、モデルYを学習させると、モデルYが学習済みモデルXほど複雑な構成でなくても(行列演算的なアレ、の回数が少なくても)、ある程度の精度のモデルになり得る、というわけである。この操作を「蒸留」と読んでいる。

■ 学習時のモデルXよりも、ぐっと簡潔なモデルYで、もとのモデルX同等の機能を得られるようにする、という話だから、計算資源が乏しい環境(例えばスマートフォンみたいなもの)でも複雑なモデルXと同等の機能を実装できるかも知れない。蒸留はこんなところに技術的な意義がある。

■ で、もう一段階話を戻すと、つまり、例えば特許権に係る生産方法で生産された学習済みモデルXがあるとして、それが「蒸留」がされてしまうと、もはやネットワークの構成から、パラメータからすべてが違う(から特許権侵害の事実がわかりにくい)が、学習済みモデルXと同じ結果を出せる、実質的な複製品(モデルY)が得られるというわけで、やっぱり権利が画餅におわる可能性が否定できない。

 要するに、

  • そもそも学習されたモデル同士を比較しても、同じ生産過程であったかが明確にならない。
  • 蒸留されると構成自体が変わってしまうので、やっぱり特許権に係る生産方法が使われているかが分からない。

という話である。デッドコピーならともかく、というのならば、著作権的なアプローチで十分なわけで、態々パテントアプローチを取るコストをかけるほどの意味があるのか、という話になってしまう。

(長くなってきたので、またまた「つづく」)

|

« 第4のはなし(1) | トップページ

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/165428/65106013

この記事へのトラックバック一覧です: 第4のはなし(2):

« 第4のはなし(1) | トップページ