各分野における知識と経験

2022年4月17日

以下の文章は、各分野における私の知識や経験などをまとめたものです。技術相談などを依頼される場合に参考にして頂けたらと思います。概ね時系列順に並んでいます。

無線通信・信号処理

大学を卒業後、10年以上無線通信の分野で研究や研究支援(シミュレータ開発)に関わってきました。通信や信号処理のアルゴリズムに関して比較的幅広い知識を持っているのではないかと思っています(変復調・等化器・誤り訂正・MIMO等)。ここ何年かはこの分野の知識をあまり吸収していないため、一部知識が古いものになっているかもしれません。

無線通信というと、一般的には統計的な手法とはあまり関わりのないものと思われているかもしれませんが、通信は基本的には常にノイズとの戦いであり、送信されたデータを受信信号から推論する際に使われる技術はまさに確率的な推論の手法に他ならないと言えます。例えば、ターボ符号や LDPC符号といった誤り訂正符号の復号には、メッセージパッシングというアルゴリズムで周辺化した事後確率を推定する手法が使われており、無線通信の分野において確率的推論は欠かせない手法となっています。

また、都市内を伝搬する電波は基本的にあちこちの建物で反射や回折を繰り返し、それらの遅延波が混ざり合って受信されます。そうした信号を元の信号の近い状態に戻すために使われる装置が等化器と呼ばれる装置になりますが、この等化にもさまざまなアルゴリズムが利用されます。特に移動通信では、時間的に変動する伝送路に動的に追随するために適応等化器と呼ばれる装置が利用されます。こうした適応信号処理の目的で使われる LMS はニューラルネットによく似たアルゴリズムになっていまして(目標となる信号に追随するように畳み込みのウェイトを少しずつ変えてゆくようなアルゴリズム)、深層学習を学ぶ際には大いに参考になった記憶があります。

画像処理

画像処理は MathWorks に在籍中に学びました。当初は基本的なモルフォロジー処理などから画像処理を学び始め、その後深層学習のブームと共に画像認識などの分野へ知識を広げて行きました。当時は「深層学習」というキーワードは知っていても「転移学習」というキーワードは聞いたことがない…くらいのお客様が沢山いましたので、簡単な転移学習のサンプルを紹介するくらいでも喜んで頂くことができたように思います。

その後は、物体検出(R-CNN, Fast R-CNN, Faster R-CNN 等)の解説やセマンティックセグメンテーションの解説などもよく行いました。MathWorks での基本的なスタンスは技術営業であり、最終的な目的は製品を買って頂くことだった訳ですが、そこにはマーケティング的な活動も含まれており、深層学習に関する技術解説をセミナー等のマーケティング活動の一環として行っていました。

MATLAB の場合は物体検出などの機能も基本的には関数を呼び出すだけで使えてしまうので、実は中身を一切知らなくても使えてしまうのですが、中身をわからずに使うのも気持ち悪いだろう…ということで、私がお客様とお話をさせて頂くときは、よくアルゴリズムの中身を紹介させて頂いていました。

また、こうした製品を紹介していく中で、簡単な PoC などに関わる機会もあり、そうした経験を通してよりアルゴリズムについての理解を深めてゆくこともできたように思います。こちらの知識は研究レベルというよりは、教科書レベルのものが多いのですが、この分野の発展と共に沢山の教科書や論文を読むことができたのは収穫だったように思います。現在は、MATLAB ではなくPython (PyTorch) を使っていますが、基本的なアイデアはあまり変わりませんので、割とスムーズに移行することができたように思います。

制御

制御分野については残念ながらあまり詳しくありません。せっかく、MathWorks に在籍していたので、在籍しているうちに Simulink をよく勉強しておけばよかったのですが、ほぼ素人レベルです。私の経歴を見た人材会社の人から制御設計の絡んだポジションをたまに紹介されることがあるのですが、MATLAB と Simulink は別のものなので、ご注意頂けたらと思います。元 MathWorks ですが、制御は素人です。カルマンフィルターや粒子フィルターはデータサイエンスでもよく登場するので、システム同定の辺りが少しだけわかります。

異常検知

この分野は、井手剛先生の有名な教科書2冊で勉強しました。この2冊の本が出るまでは、異常検知についてはなかなかまとまった良い教科書がなく、情報を集めるのが大変だったのですが、この2冊の教科書が出たおかげで、かなり楽になったように思います。MathWorks の頃は、こうした教科書で勉強をさせて頂きつつ、画像や信号の異常検知の例題を幾つか作成して、お客様に紹介させて頂いていました。

下のビデオでは、建物の振動データを AR モデルにあてはめて、その係数を特徴量として使い、異常検出をさせた例になっています。もともと MATLAB/Simulink は制御分野でよく使われており、システム同定の関数などもしっかり整備されているので、こうした特徴抽出ではうまく使うことができる…ということを示した例題になっています。

こんな感じのスライドもよく作りました。

https://www.matlabexpo.com/content/dam/mathworks/mathworks-dot-com/images/events/matlabexpo/jp/2017/b5-neural-net-sensor-data.pdf

ベイズ統計モデリング

MathWorks を辞めた後で、友人から声をかけてもらい、とある案件の需要予測モデルをつくることになりました。この案件で扱うデータはポアソン分布に従う離散値の小さなデータであり、分布を無視した予測ではあまり意味がないように思われました。また、将来的に予測を意思決定に繋げる上でも予測分布が重要であることが想定できたため、この問題ではベイズ統計モデルを積極的に利用しました。

この案件では、需要データは単純にカレンダーの情報により変化するだけでなく、あるパラメータにより需要がかなり大きく変動し、なおかつ品切れなども考慮する必要がありました。非常に難しいデータでしたが、なんとかモデルとして形にすることができました。

そして、この経験を元に作ったのが、幾つかのベイズ統計モデリングに関する Udemy の講座です(※)。巷では「AI」や「人工知能」というキーワードと共に、ニューラルネットに大きなスポットライトが当たっていますが、現実の世界から得られるデータはかなりさまざまなノイズを含んでおり、データ点数もそれほど大きく取れないことがあるため、個人的にはもっとベイズ統計の出番があるのではないかと思っています。そうした意味からベイズ統計の宣伝の意味も込めて、こうしたオンラインの講座を作ってみました。もしよろしければオンラインの講座の方もぜひご覧になって頂けたらと思います。本サイトでは講座の方で紹介しきれなかったトピックなどもブログの方へ投稿させて頂いています。

※ なお、クライアント様向けに開発したカスタム仕様のアルゴリズムを Udemy の講座の方で公開したりすることはありませんので、どうかご安心下さい。講座の方でご紹介させて頂くのは、一般的に知られている初歩的なものやツールの使い方などに限定させて頂いています。

開発言語等

無線通信の研究に関わっていた頃は、主に C/C++言語や MATLAB を使用していました。研究では新しいアルゴリズムを自分たちで生み出す必要があったため、基本的な行列やベクトルの演算を中心にゼロからアルゴリズムをコード化するような機会が多かったように思います。MathWorks に在籍している頃は、ゼロからアルゴリズムをコード化する機会は少なくなり、Toolbox と呼ばれるライブラリの関数を組み合わせて、コードを書く機会が増えました。セミナーやオンラインの動画で使うためのシンプルなコードを書くことが多かったように思います。

こうした技術解説のためのコードは自分の力量を示すためのコードというよりは、人に理解してもらうためのコードであり、なるべく早く理解してもらうことがポイントになります。「なんだかわからんが、とにかく凄いそうなコードだ…」ではなく、「なんだ簡単じゃないか…」そう思ってもらうことがポイントです。そうして、コードを理解した人が、なるべく短い時間でコードを改造してゆけるようにお膳立てすることが重要だと考えています。こうしたことを通して、数理技術の素早い拡散に貢献できればと思っています。

現在は主に Python を利用しています。MATLAB のように全てきれいに出来上がっているものばかりではありませんが、オープンソースのコードをうまく組み合わせることでも目の前の課題を解くには十分なものがあちこちに転がっています。最近よく使っているパッケージは、NumPyro, PyMC3, PyTorch などです。

位相幾何学・微分幾何学

大学時代の専門は微分位相幾何学でしたので、位相幾何学と微分幾何学の両方に関する基礎知識があります。私が大学を卒業した頃には「現代幾何学の知識などはほとんど世の中の役に立たないかもしれない…」と完全に諦めていたのですが、徐々にデータサイエンスの分野でもこうした知識が役立つ場面が増えてきて、個人的には非常に嬉しく感じています。

甘利先生の情報幾何などは私が大学時代の頃から既にありましたが、パーシステントホモロジーやグラフニューラルネットワークなどは割と近年に出てきた手法で、こうした手法が世の中の脚光を浴びるたびに古い友人に会ったときのような嬉しさを感じます。

物体の形状やグラフ構造などにも興味がありますので、いずれはこうした知識も活かしてゆくことができる案件に出会えると嬉しいです。

最近の興味

現在は案件のないときに、次のようなキーワードにフォーカスをあてて、勉強を進めています。

■ フリストンの自由エネルギー原理
■ モデルベース強化学習(Dreamer 等)
■ 部分観測マルコフ決定過程(POMDP)
■ 統計モデリングの分野での変分推論
■ VAE系の生成モデル

特に近年は、これらのキーワードが有機的に繋がってきているように思えてきて、非常にエキサイティングな感じがしています。

汎用人工知能は我々世代のエンジニアの共通の夢のような気がしているのですが、いつかこうした分野にも関わることができればと思っています。

Posted by 管理者