お客様: 大手製造業の研究部門様

ご依頼内容

  • Pythonで実装している時系列向けの深層学習モデルを、MATLABでも同じように学習できる形にしたい、というご相談。
  • そもそも移植できるのかを、まず調べたい。
  • 潜在変数の時間発展を予測する部分まで含めて、動くプロトタイプで確かめたい。
  • 移植したコードと報告書を受け取り、社内で検討を続けられる状態にしたい。

課題

  • 画像向けに書かれたMATLABの公式例を、時系列データに合う構成へ、作り替えること。
  • 標準の学習関数では扱えない損失関数と学習ループを、自前で実装すること。
  • Python版と同じ条件で比べられるように、入力データと潜在変数の次元を、揃えること。
  • 移植できた範囲と、学習が収束しない範囲を、切り分けて報告すること。

ソリューション

  • Python版と同じ入力データ、同じ潜在変数の次元を用い、時系列向けのVAEをMATLABで構築した。
  • ELBOとKLダイバージェンスを含むカスタム損失関数と、学習ループを、自前で実装した。
  • 再パラメータ化のためのカスタムレイヤーを作り、ノイズの大きさを調整して、学習が進む条件を確保した。
  • Python版との実装の違いは、意図的な選択として、理由とともに報告書に明記した。
  • 一つ前の潜在変数から次の状態を推定し、Decoderへ渡す遷移ネットワークを、追加した。
  • 遷移を学習させるには入力系列に時間的な因果が必要と判断し、検証用のデータを因果のある系列へ差し替え、学習時のシャッフルを止めた。
  • 遷移部分は全結合層の多段構成とLSTM構成を比較し、収束しなかった構成も、そのまま報告した。
  • 再構成誤差とKL項のスケール差など、未収束の原因候補と次の検討項目を、整理した。
VAEのEncoder、潜在変数の確率分布、Decoderの構造を示す説明図
VAEの構造。Encoder/Decoder構造を持つオートエンコーダーで、潜在変数に確率分布を用いる。本件は、この構成をPythonからMATLABへ移した。図はイメージを対象にした例で、本件では同じ構成を時系列データ向けに組み替えている。出典: The MathWorks, Inc.「GANやVAEで加速する画像ディープラーニング」(2020年5月19日のウェビナー資料 p.27。© 2020 The MathWorks, Inc.)
ELBOと再構成損失、KL損失の関係を示すVAEの損失関数の説明図
VAEの損失関数。再構成損失とKL損失からなるELBO(変分下限)を最小化することで、出力が入力に近づき、潜在変数が確率分布の連続空間で表現されるように学習される。本件では、この損失関数と学習ループをMATLABで自作した。出典: The MathWorks, Inc.「GANやVAEで加速する画像ディープラーニング」(2020年5月19日のウェビナー資料 p.28。© 2020 The MathWorks, Inc.)
Python実装をMATLABへ移植した時系列VAEの構成図
MATLABで組み直した構成。Python版と同じ入力データ、同じ潜在変数の次元を用い、Encoder、自作のサンプリング層、Decoderからなる時系列向けVAEを構築した。損失関数と学習ループは、標準の学習関数が使えないため自作している。破線が追加した遷移ネットワークで、この部分は枠組みの作成までとなった。
入力の系列と、VAEの再構成および遷移ネットワークの予測を比べた模式図
VAE部分と遷移ネットワークの違い。左はVAEが入力の系列をおおむね再構成できた状態、右は遷移ネットワークの予測が入力に追従しなかった状態を表す。この図は説明のために生成したサンプル波形による模式図で、実際の解析結果ではありません。
移植できた範囲、収束しなかった範囲、次に検討する項目を並べた一覧
報告した内容の切り分け。移植できた範囲、収束しなかった範囲、次に検討する項目を分けて示し、未収束の原因の候補まで添えた。

結果

  • VAE部分は学習の損失が減少し、入力した時系列をおおむね再構成できることを、確認した。
  • 遷移ネットワークを含む枠組みまで作成したが、この部分は収束せず、未収束であることを明記して報告した。
  • 移植できる範囲と、追加の研究が必要な範囲を切り分け、原因の候補と次に試すべき項目まで示したので、顧客側で検討を引き継げる状態になった。

ひとこと

  • MATLABの公式例は画像向けのものが多く、時系列データに合わせるには、ネットワークの構成から損失関数まで組み替えることになります。標準の学習関数が使えない構成では、学習ループそのものを書くことになるため、深層学習の中身を理解している人が担当するのが良いと思います。
  • 移植の可能性を調べる仕事では、できたことと同じくらい、できなかったことの理由が次の検討の材料になります。収束しなかった構成と、その原因の候補も含めてお渡ししています。
  • 「Pythonで動いているものを、MATLABでも動かせるか」というご相談は、よくいただきます。まず調べる段階からお引き受けし、動く範囲と動かない範囲を切り分けてご報告します。

お問い合わせ

開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。

今すぐお問い合わせ