見出し画像

振り返るとそこには「Python機械学習プログラミング」⑤急

はじめに

シリーズ「Python機械学習プログラミング」の紹介

本シリーズは書籍「Python機械学習プログラミング PyTorch & scikit-learn編」(初版第1刷)に関する記事を取り扱います。
この書籍のよいところは、Pythonのコードを動かしたり、アルゴリズムの説明を読み、ときに数式を確認して、包括的に機械学習を学ぶことができることです。
Pythonで機械学習を学びたい方におすすめです!
この記事では、この書籍のことを「テキスト」と呼びます。

記事の内容

テキスト「Python機械学習プログラミング PyTorch & scikit-learn編」(初版第1刷)の一周完走を記念して、感想を綴ります。
全19章・712ページにわたって実装を重ねた機械学習アルゴリズムとのふれあいの日々のダイジェストです。
今回は「急」。最終章です


急:さらなる複雑な世界へ

18章 グラフニューラルネットワーク-グラフ構造データでの依存性の捕捉

18章の前に
残すところ、あと2章となりました。
この2章は今までの機械学習・深層学習と毛色が違う感じがするので、個別に章立てしました。
じつに難解でして、理解が行き届いておりません。
「ふむふむ、機械学習系にはこんな分野もあるんだな」くらいの認識で、表面をサッとなぞった程度です。
急いで18章・19章が向かってきて、あっという間に過ぎ去っていった、こんな感じです。
うぬぬ、無念。。。

18章に戻ります
18章は新たなデータ構造のディープラーニングに取り組みます。
ノード(丸)とエッジ(線)で関係性を表現する「グラフ」データです。
グラフデータを取り扱うニューラルネットワークをグラフニューラルネットワーク:GNNと呼びます。
ニューラルネットワークの定義では、14章の画像処理で出てきた「畳み込み」をグラフデータに適用するグラフ畳み込み層を活用します。

グラフ構造の例

■アルゴリズム&タスク
・基本的なグラフ畳み込み:NumPyで一から実装
・基本的なGNN:PyTorchで一から実装(NodeNetworkクラス)
・回帰:QM9低分子化合物の等方性分極率 : Pytorch Geometricで一から実装
■データセット
・QM9データセット@torch_geometric.datasets

テキスト18章のダイジェスト

この章の山場である「QM9データセットの訓練」については、次の記事で詳しく書いています。ぜひお読みください!


この章で学べる統計検定のトピックを紹介します。

📘統計検定準1級トピック
25章 因子分析・グラフィカルモデル:グラフィカルモデル
28章 分割表:グラフィカルモデル

統計学実践ワークブックより

落とし穴
グラフデータの描画ツール「NetworkX」がなかなかの曲者でした。
内部処理で利用する他のライブラリ(SciPy、matplotlib)の依存バージョンなどで問題が発生して、コツコツとエラーつぶしに励みました。
最後にはテキストのグラフデータをNetworkXで描画できるようになりました。
詳しくは次の記事で!


19章 複雑な環境での意思決定-強化学習

いよいよ最終章。
強化学習に取り組みました。

強化学習は、「報酬の最大化」を目指して主人公=エージェントが行動します。
「環境」と呼ばれる場所で「状態」の選択肢から行動を選び、実際に行動して報酬を獲得し(またはマイナスの報酬を抱えて)、最適な解を導いてゆきます。
いままでの機械学習・深層学習では、データを与えて予測を行いましたが、強化学習では、最初からデータが揃っているのではなく、エージェントが行動を起こして環境からデータを取得するのです。

強化学習は、囲碁AIのアルファ碁、自動運転など、さまざまな技術開発で取り入れられているそうです。
強化学習は難しい概念ですが、ロマンがあります。

テキストの実装では、OpenAIが提供する「Gym」を利用します。

Gym:CartPoleの一コマ

■アルゴリズム&タスク
・Q学習・グリッドワールド問題:NumPyで一から実装
・深層Q学習(DQN)・CartPoleV1:PyTorchで一から実装

テキスト19章のダイジェスト

アニメ・動画の保存
この章では、テキストのサンプルコードを実行することと並行して、Q学習中のビジュアルをGIFアニメーションや動画ファイルに保存するワンポイントプラスをして楽しみました。
noteの執筆においても、GIFアニメを貼り付けたり、動画ファイルのツイートを貼り付けしたりと、新しい記事の書き方を学びました。

グリッドワールドの一コマ

落とし穴
テキストで利用するGymのバージョンが古いのです。
このことが原因で、回避策の調査等に時間を使うことになりました。
また、今回の実装コードをそのまま、Gymの新しいバージョンで使えないため、コードの可搬性はあまり高くなさそうです。

なんだかんだで楽しく実践できたことを記事にしています。
よかったら読んでいってくださいね。
アニメ・動画も見られます!

小さなまとめ
急ぎ足でのご紹介となりました。
急いでみたものの、機械学習・AI関連分野の進歩は著しく速くて、平凡なわたしは急ぎ足でも到底追いつくことができない、こんなことを学びました。
しかし一方で、気になるテーマをコツコツと実践していくことで、学びがどんどん楽しくなっていくことも学びました。


「Python機械学習プログラミング」の長旅が終わります。
振り返り5記事の執筆を通じて、改めて、このテキストの楽しさを思い出すことができました。
このテキストが取り扱う内容は、機械学習・AI分野の基礎的な体力づくりに役立つものでしょう。
この基礎を活かして、次のステップに駒を進めたいと思います。

これをもちまして、「Python機械学習プログラミング実践記」は幕を閉じます。
ここまでお付き合いしてくださり、誠にありがとうございます。
もしも「Python機械学習プログラミング Pytorch&scikit-learn編」の実践に取り組むことがありましたら、この記事群を思い出していただけると嬉しいです。
青い鳥のような存在になれたなら幸いです。

おわり


お知らせ

AI・機械学習の学習でおすすめの書籍を紹介いたします。
「日本統計学会公式認定 統計検定2級 公式問題集[CBT対応版]」

新連載「のんびり統計」が始まりました!
第1話のリンクです!

新連載では「統計検定2級 公式問題集[CBT対応版]」をテキストにします!
統計学に興味をお持ちの方と一緒に学習を進める気持ちで書きます!
データサイエンスの基礎固めとして、また、データ分析の手始めとして、確率・統計を学んでみませんか?

「のんびり統計」の目次です。

最後まで読んでくださり、ありがとうございました。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?