2022.07.08

ハイブリッドモデル(深層学習+確率グラフィカルモデル)の紹介

こんにちは。AI研究開発室のA.Z.です。

前回、軽く確率グラフィカルモデルについて、紹介しました。今回は最近メージャーになっている深層学習との組み合わせ(ハイブリッドモデル)について簡単に紹介します。

 

はじめに

近年、機械学習の分野の中で、深層学習がかなり注目されています。画像系のタスクから、その後音声タスクや自然言語処理系のタスクにもどんどん展開されています。その手法自体はもちろん精度がよく、世界の大手企業でもよく使われており、多くのリソース(お金、人材)が投資されています。しかし、深層学習も様々な欠点もあります

その欠点について、以下に簡単に話します。

 

1. モデルがうまく行くいかないかの理由が説明できない

深層学習は基本的構造がかなり、複雑で構造かつ大量なデータで学習されるため、実際に最終的な結果なぜその結果になるか、モデルの中身に何が起こっているか、なかなか特定が難しいです。だいたい評価できるのはインプットとoutputのみで、中身はblackboxになっています。

直近のトレンド、explainable AI(説明できるAI)の研究が進んでいますが、まだたくさん課題が残っています。

2. 決定的な予測結果

深層学習は最終的な学習結果は数学関数的に表現されるので、インプットが同じであれば、予測結果も同じです。こちらは強みではありますが、弱みもあります。実世界では、いろんな不確実性もあり、同じインプットでも違う結果の形が求められるケースもあります。例えば以下のケース
  • 金融分野ではすべての要素をモデルに入れるほぼ不可能で、予測結果はある程度不確実性も考慮し、正確にリスク評価
  • モデル学習データはモデルの予測結果に依存するようなシステム。こちらは例えば広告配信システムです。モデルの学習データは配信した結果のデータを利用するため、例えば、あるケース・パターンが最初にデータが少なくモデルの予測値(効果)が低くなります。広告配信システムが基本的に、予測した効果に合わせて配信しているので、予測効果低いと、配信量が少なく、そしてモデルの学習うまく行かなく、ずっと低いままになって、その結果、該当するパターン・ケースがずっと売上伸びない状態になります。

3. Adversarial 攻撃に弱い(騙されやすい)

 こちらの欠点は基本的に(1)と(2)の欠点で、組み合わせた結果だと思います。モデルの中身はブラックボックスと決定的な予測結果により、少しだけ、inputを変えれば、全く違う結果になってしまいます。

例えば以下の例です。

引用:https://openai.com/blog/adversarial-example-research/



上記は少しだけノイズを入れて、人間からみると、特にあまり変わらないが、深層学習モデルにとっては完全に別のオブジェクトになります。

 

4. デル学習コスト高い

深層学習は基本的にモデルが深くかつ大量な学習データに依存しているため、学習には大量な計算リソースが必要です。

 

5. 人間のドメイン知識を取り入れのは難しい

特徴量頑張って加工しても、モデルの中身がブラックボックになっているため、期待どおりの挙動にならないケースも多いです。

上記の深層学習の欠点は、確率グラフィカルモデルの特徴・強みで埋められます。ちなみに、どのようなグラフィカルモデルでその欠点が埋められるか。
  1. グラフィカルモデルはモデルの中の関連性が、グラフと確率で表現されるので、モデルの中身はどのような動きになっているか構造や確率の定義を利用すれば、説明可能です。
  2. 予測結果は分布または信頼空間の形になります。なので、ある程度不確実性も考慮されます。
  3. 各モデルの特徴量と学習したパラメータ予測結果が確率的になっているため、多少インプットが変わっても、結果がそこまで大きく変わりません。
  4. グラフィカルモデルはモデルの依存関係と確率が再定義すれば、少ないデータでも学習できるので、学習の計算リソースが抑えられます。
  5. グラフィカルモデルは事前に要因(特徴量)と関連性と確率分布が定義できるので、今まで人間が蓄積したドメイン知識は簡単に取り込むことができます。
上記の深層と確率グラフィカルモデルの特徴がお互いに補体しあいできるため、その2つの手法を組み合わせて、より完璧に近いモデルが研究されています。その組み合わせたモデルはハイブリッドモデルと呼ばれています。

 

Hybrid Modelについて

こちらでのハイブリッドモデルとは、それぞれ深層学習と確率グラフィカルモデルの得意分野を応用し、結合するモデルです。

もともと、深層学習と確率グラフィカルモデルの理論や研究は昔から、すでにあります。様々なユースケースや問題では統合や組み合わせ方法が違います。

次はいくつかの統合のパターンを簡単に紹介します。

1. グラフィカルモデルの特徴量は深層学習に学習させる

例:NN(neural network)+HMM(Hidden Markov Model)

本の論文:

Bengio et al., Global Optimization of a Neural Network-Hidden Markov Model Hybrid,IEEE TRANSACTIONS ON NEURAL NETWORKS, VOL. 3, NO. 2, MARCH 1992 

 

引用:http://www.cs.cmu.edu/~epxing/Class/10708-16/slide/lecture27-GM-NN.pdf



こちらのアプローチでは、深層学習(ニューラルネットワーク)の得意分野、特徴量の処理に適用されます。また、時系列データに関してはグラフィカルモデル(Hidden Markov Model)で、行うパターンです。

 

2. グラフィカルモデルをタスクの制約を学習させ、メインタスクは深層学習で対応

元の論文:

Hu et al,.Deep Generative Models with Learnable Knowledge Constraints, NIPS 2018

上記の論文の中で、深層学習の生成モデルを使って、確率グラフィカルモデルは生成の制約(人間のポーズや体の位置)の学習に使われます。

引用:Hu et al,.Deep Generative Models with Learnable Knowledge Constraints, NIPS 2018



 

モデルのインプットとしては人間の画像と、生成するべきポーズの制約(複数ドット)になります。モデルの全体としては以下のロス関数で、学習を行います。


constraint loss(制約のロス関す)が簡単に計算できないため、以下のように別の近似分布 (q)で推定されています。


 

3. 深層学習の構造自体、全て確率的な要素に対応できるコンポーネントを利用する。

こちらのアプローチは基本的に深層学習の構造自体はすべて、確率要素を取り入れたブロックを使います。例えば、Tensorflowのフレームワークの場合は、tensorflow probabilityというextensionが用意した確率layerを使います。フレームワークですべての計算や最適化を行うので、利用しやすいです。また、確率的なバックプロパゲーションの部分が自分で実装しなくても良いので、開発工数が少ないです

 

上記の例はただの一部の例だけで、もちろん、他のなユースケースががまだあります。今回、は軽く(3)の例を簡単に紹介したいと思います。

 

Tensorflow Probabilityを利用し、ニューラルネットワークのような確率モデルを試す

Tensorflow probabilityとは、Tensorflowベースに開発された、確率モデルのフレームワークです。基本的に、普通のニューラルネットワークのような構造を作成でき、更に各ノードやレヤーなどが固定のウェイトではなく、分布として、学習させることができます。これによって、簡単にニューラルネットワークと確率モデルの組み合わせをすることができます。

 

今回は簡単な紹介だけなので、以下サンプルのベースに簡単に試してみました。

https://keras.io/examples/keras_recipes/bayesian_neural_networks/

モデルの構造を作成するときに、tf.keras.layers*の代わりに、以下のようにtensorflow_probabilty.layers.*を利用するだけです。
for units in hidden_units:
   features = tfp.layers.DenseVariational(
       units=units,
       make_prior_fn=prior,
       make_posterior_fn=posterior,
       kl_weight=1 / train_size,
       activation="sigmoid",
   )(features)
 

また、普通のtensorflowのlayersにも接続することができて、基本的にtensorflowで作成したモデルであれば、tfpで、簡単に確率モデルを追加できます。
 batch_normalization (BatchNorm  (None, 11)          44          ['concatenate[0][0]']            
 alization)                                                                                       
                                                                                                  
 dense_variational (DenseVariat  (None, 8)           4752        ['batch_normalization[0][0]']    
 ional)                                                                                           
                                                                                                  
 dense_variational_1 (DenseVari  (None, 8)           2700        ['dense_variational[0][0]']      
 ational)                                                                                         
                                                                                                  
 dense (Dense)                  (None, 1)            9           ['dense_variational_1[0][0]']    
                                                                                                  
==================================================================================================

しかし、試したところで、標準tensorflowで便利な機能が一部りようできない、または工夫が必要そうです。例えば、通常のtensorflowのsave modelがうまく行かないし、tensorboardの情報が足りなかったりというケースもあります。学習プロセスのデバッグするときに、おそらく自分で、適切なパラメータや情報を抽出し、可視化しないと行けないかもしれません。

個人的に、普通のニューラルネットワークと簡単に結合でき、更に様々な確率関数を性能良く利用できれば、ありがたいと思います。

まとめ

今回hybrid model(深層学習+確率グラフィカルモデル)の利用モチベーションといくつかのhybridモデル例を簡単に紹介しました。何かの機械学習モデルを作成するときに、簡単な参考情報になっていけたらと思います。また、非常に簡単な例ですが、hybridモデルを作成するときに、tensorflow probabiltyという便利なframeworkがあり、ご参考いただけると幸いです。次は更にtensorflow probabiltyを深堀し、実例のモデルのカスタマイズまで、紹介してみたいと思います。

 

最後に

グループ研究開発本部 AI研究開発室では、データサイエンティスト/機械学習エンジニアを募集しています。ビッグデータの解析業務などAI研究開発室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。皆さんのご応募をお待ちしています。

  • Twitter
  • Facebook
  • はてなブックマークに追加

グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。

 
  • AI研究開発室
  • 大阪研究開発グループ

関連記事