見出し画像

【W7】活性予測のための機械学習モデル_12_Step3_06_ANN_MLP

【W7の目的】

ターゲット分子(EGFR)に対して新規な化合物の活性を予測するために、様々な教師あり機械学習(supervised ML)アルゴリズムを使用する方法について学習します。

前回でランダムフォレスト(RF)のworkflow(WF)まで学習してきました。

今回はとうとう人工ニューラルネットワーク(ANN)、深層学習の学習にもつながるパートです。

ここも私のような素人が何かを解説するというのはおこがましいのですが、先人の教えを私が学習した事実の記録ならば嘘にはならないかと思いながら続けます。前にも述べたように引用部分以外誤報の可能性があります。

【機械学習の基礎からもう一度】

ニューラルネットワークについてはいかにやさしく初心者に教えたらいいか、多くの方々が工夫を凝らしてくださっています。W7 Step3の機械学習アルゴリズム紹介でも取り上げた教材も一部再掲しつつ学習記録を続けます。

日本IBMの赤石さんが下記の講演資料を公開してくださっています。

私にとってありがたかったのは、いきなりニューラルネットワークだけの概念説明から始めるのではなく、よりシンプルな機械学習の仕組みを使って丁寧に段階的に教えて下さったところです。

機械学習モデルには、様々な実装方式がありますが、その中の一部のグループはディープラーニングと密接な関係があります。
具体的には、下記のモデルが該当します。
ニューラルネットワークの層の数を増やしてより複雑にしたのが、ディープラーニングということができます。

モデルの構造は複雑になりますが、学習の方式はすべて共通です。

・線形回帰
・ロジスティック回帰
・ニューラルネットワーク
・ディープラーニング

そして、

この中で最もわかりやすい「線形回帰モデル」を例に、機械学習のアルゴリズムを理解していきます

損失関数」と「勾配降下法」の2つが重要な概念となります。

とPythonのコードを公開した上で丁寧に計算工程を説明してくださっています。

そういえば自分は数学の問題でΣがでてきたらひとまずn=1だけで考えて、nを増やしてみてって考えたほうが分かりやすかったなぁと思い返しています。

勝手にスライド転用は憚られたので上記の文章の引用のみとしておりますが皆様ぜひ一度見ていただけたらと思い紹介まで。

上記のようにまずはシンプルなモデルで勉強した後で、以前に紹介したよびのりの講義動画を見ると、逆誤差伝播法が分かった気になれます。分かったとは決して言いません。

また他にも日本語で機械学習を基礎から学ぶ教材はあまた無料公開されていますね。皆様のおすすめがあったらtwitterなどで紹介していただけたら嬉しいです。

一例ですが、筑波大学の佐久間先生の機械学習の講義動画もお勧めしておきます。本気で取り組む必要はあるんですが、先生のトークが軽妙で引き込まれます。ご興味あれば。

【RProp MLP Learnerの説明だけ着手】

さて、玄人な皆さんの素敵な教材を紹介しているだけで1000字を超えてしまいました。さすがにそれだけではとKNIMEのworkflowを見てみます。

TeachOpenCADDのニューラルネットワークはRProp MLP Learnerで実装されています。この名前を見てすぐにニューラルネットワークだってわからない初心者の方が殆どだと思うのです。私もその一人です。

日本語化されたディスクリプションを引用しますが、むしろ「???」となりました。

多層フィードフォワードネットワークのためのRPropアルゴリズムの実装。
RPROPは、誤差関数の振る舞いに応じて、重み更新の局所的な適応を行います。

そこで私はインフォマジシャン研究所の藤さんに助けを求めて上記の教材など学ぶに至ったわけです。迷える老羊をお導きいただき感謝しております。

さて、どこから手を付けたものやら。

【多層フィードフォワードネットワーク】

RProp MLP Learnerというノード名のうち
MLP Learner部分がこちらに当たるかと思います。
MLP = Multilayer perceptron, 多層パーセプトロン
については、うぇるちさんの漫画を以前にも紹介しました。

ニューラルネットワークの中でも、もっとも基本的なアルゴリズム、多層パーセプトロンじゃ

多層パーセプトロンでは、複数の入力信号を受け取って一つだけ次へ出力するぞい

情報が、 前へ前へ伝わって いくことを順伝播 と言うぞい

順伝播するためには、ネットワークが フィードフォワード(※1)な構造で あることが重要じゃな

※1(データの流れが一方向で行ったり来たりループしない)

引用部分だけではわからない方や、語尾が気になる方は原典をぜひ参照ください。

そして下記のサイトでは実際にMLPが動くので皆様にも見ていただきたいです。

ニューラルネットワークが初期の入力を層ごとに処理して出力に向けて送ることをフォワードプロパゲーション(順伝搬)またはフォワードパスと呼び、このように動作するニューラルネットワークは一般にフィードフォワードニューラルネットワークと呼ばれます。以下で触れるように、データが環状に流れるようなニューラルネットワークもいくつかありますが、まだ気にする必要はありません。

次のインタラクティブなデモでフォワードパスについて詳しく見てみましょう。右上にある「次へ」ボタンをクリックしてください。

ということで、上記コメントの直下にあるウィンドウでnextを順に押していってください。入力データxは3つ、出力データyは一つで、隠れ層と出力層ともに1層すなわち計2層のネットワークが表示されます。
10回nextを押すと実際にどう計算を進めるか、そしてベストの重みづけが完了した結果まで見ることができます。

RProp MLP Learnerというノード名のうちMLP Learnerは上記の機能を表しています。次回はRPropって何かを調べてみますね。


おまけ:

【そして深層学習へ…いやまだでしょ】

付け焼刃でどこまで書くんだと自問自答しながら今回もnote作成を終えました。
ニューラルネットワークについて、ハイパーパラメータチューニングなどは私のnoteでは扱えそうにないです。
深堀りしたくなったらぜひこちらをお読みください。

私のようにPythonのコード理解が追い付かず断念してしまうのはもったいないです。

一方で、またもしローコードにこだわりがある方にはこちらの選択肢もありますよ。

私もいつか本を購入して読んでみたいと思いつつまだ手をこまねいています。実は誰か日本語訳してくれないかと熱望しつつ記事リンク先の紹介まで。

記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。