化学系エンジニアがAIを学ぶ

PyTorchでディープラーニング、強化学習を学び、主に化学工学の問題に取り組みます

メモ: Python defaultdict の使い方

辞書型は存在しないキーを参照しようとするとエラーになるが、 >>> d = {} >>> d['a'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'a' defaultdictは存在しないキーを参照すると、自動的にそのキーのデータを生成する >>> import c</module></stdin>…

OpenAI Gym 基本的な使い方のメモ

はじめに すぐに使い方を忘れてネットで調べているので、基本的な使い方をメモしておく。ObservationWrapperの使用例も記載する。 基本的な使い方 CartPole 環境の構築(環境インスタンス生成) import gym env = gym.make("CartPole-v0") 環境の初期化。観測…

メモ: Miniconda インストール on macOS

はじめに Anacondaは便利だが使うことのないパッケージがかなり大量に入っていて、ストレージに余裕のない状況ではつらいのでMinicondaを入れてみる。 準備 こちらに公式のinstructionがあるので一読しておく。 Installation — conda 4.9.2.post24+e37cf84a …

メモ: ベイズ推定 MCMC法のためのPyStanの使い方

はじめに ベイズ推定で用いるMCMC法の計算をするためのPyStanの使いかたについて簡単な例とともにメモを残す。 問題 平均値既知(10)の標準偏差不明の20個のデータから、標準偏差の値(確率分布)を推定する。 やり方 jupyter notebook使用を想定。 準備 impo…

CNN(Convolutional Neural Network)を用いた画像識別の簡単な例

はじめに CNNによる画像識別の簡単な例として、下記の波形図の1つ目のピークが高いか2つ目のピークが高いかの識別をPyTorchを使って試みる。 データの準備 画像をCNNで使える配列の形に変換する方法はいくつかあると思うが、ここではpillowを用いた。波形の…

Chainer 開発終了

Chainerが開発終了の模様です。 tech.nikkeibp.co.jp こういうことがあるのでフレームワークや言語選びは悩みますね。 はじめはChainerを使おうとしていたのですが、PyTorchにしておいてひとまず良かったようです。

メモ: Pillowを用いた深層学習用の画像データ数値化

画像データの深層学習を行うためのPillowを用いた画像データ数値化のメモ。 次の適当な画像データを、深層学習に使えるように数値化する。 (testfig.png) from PIL import Image import numpy as np im = Image.open("./testfig.png") # 画像ファイル読み込…

ディープラーニングによる化学プラントの異常検知の簡単な例題

はじめに 例えば連続で運転し化学品を製造するプラントにおいて、何らかの原因で反応温度や圧力が異常に上昇したり、製品中の不純物が増加するなどして運転が継続できず、プラント停止を余儀なくされることがある。この場合、プラント設備の復旧や製品在庫管…

深層強化学習の簡単な例 〜Double DQN適用〜

はじめに 以前の記事で簡単な問題を対象にDQN、Experience Replayを適用してみたが、今回はさらにDouble DQNを追加してみる。なお下記サイトを参考にした。 Let’s make a DQN: Double Learning and Prioritized Experience Replay – ヤロミル https://www.re…

メモ: PyTorch 重み、バイアスの初期化について

はじめに PyTorchのニューラルネットワークの重み・バイアスの初期化についてのメモを記す。 重み 重みの内容は次のようにして確認できる。 >>> import torch.nn as nn >>> l = nn.Linear(1, 3) >>> l.weight Parameter containing: tensor([[ 0.6204], [-0.…

ニュース: Preferred Networks、JXTGエネルギーと石油精製プラントの最適化・自動化に関する共同研究を開始

Preferred NetworksがJXTGエネルギーと石油精製プラントの最適化・自動化に関する共同研究を開始したそうです。10億円もの資金が調達されるそうで、一気に技術開発が進むことが期待されます。近い業界に関わる者としては、得られた知見などを可能な範囲で…

深層強化学習(Deep Q Network, DQN)の簡単な例 〜Experience Replay追加〜

はじめに 前回の記事でOpenAI Gymを使わず非常に簡単な問題を対象にDQNを適用してみたが、"Experience Replay"を入れていなかった。今回は前回の問題にExperience Replayを追加してみる。なおこれを実施するにあたり、下記サイトを参考にした。 第15回 CartP…

深層強化学習(Deep Q Network, DQN)の簡単な例

はじめに DQNを学ぼうとして色々と調べたが、どこもかしこもOpenAI Gymを使っていて、まずそれの扱いから考えないといけないのでつらい。ここではOpenAI Gymを使わず、非常に簡単な問題を対象にDQNを適用してみることとする。Python、PyTorchを用いる。 また…

反応器計算におけるQ学習2

はじめに 以前の記事で管型反応器において所望の反応率を得るという問題について強化学習(Q学習)を適用したが、 今回は反応率に応じて目的成分の選択率が変化するという条件で、収率を最大化する問題を対象とする。 管型反応器の例題 対象とする問題は下記…

反応器計算におけるQ学習

はじめに 簡単な例として、管型反応器において反応温度を調節して所望の反応率を得るという問題について強化学習(Q学習)を適用してみる。 管型反応器の例題 対象とする問題は下記の通り。 成分Aを反応して生成物Bを得る管型反応器がある 反応器は連続運転…

メモ: PyTorch tensor requires_gradのTrue/False確認、切り替え

requires_gradのTrue/False確認 属性 requires_gradを参照して確認できる。 import torch a = torch.tensor([0, 1], dtype=torch.float32) b = torch.tensor([2, 3], dtype=torch.float32, requires_grad=True) a.requires_grad b.requires_grad 実行結果 Fa…

メモ: PyTorchの自動微分について

はじめに PyTorchの自動微分についてのメモを記す。 自動微分 アルゴリズムによって定義された関数からその関数の偏導関数値を計算するアルゴリズムを導出するための技術。 数値微分や数式微分とも異なる方法で、これら方法の問題点(誤差や桁落ちによる精度…

スキナー箱のQ学習

はじめに ネズミがボタンを押して餌を得るという問題について強化学習(Q学習)を適用してみる。 本記事の内容に関して下記書籍を参考にした。 牧野浩二、西崎博光, 『Pythonによる深層強化学習入門』, オーム社 (2018) ネズミの学習問題 対象とする問題は下…

ニューラルネットワークによる手書き数字の認識

はじめに scikit-learnライブラリに含まれる手書き数字データを用いて、ニューラルネットワークによる 手書き数字認識をやってみる。 データの準備 手書き数字データはサイズ 8 x 8で、グレースケールの階調が17段階となっている。具体的な手書き数字画像は …

ニューラルネットワークによるばらつきのあるデータへの近似

はじめに 前回は関数値そのものを学習させたが、今回は関数値をもとに作成したばらつきのあるデータを学習させて 関数をニューラルネットワークで表現できるかを見てみる。 以下の記事で同様の内容がtensorflowを用いて紹介されているが、 ここではPyTorchを…

メモ: PyTorch TensorDataset、DataLoader について

はじめに PyTorchのtorch.utils.data.TensorDataset、torch.utils.data.DataLoaderの使い方についてのメモを記す。 torch.utils.data.TensorDataset 同じ要素数の2つのtensorを渡し、その組を得る。 import numpy import torch import torch.utils.data x = …

ニューラルネットワークによる関数近似

はじめに PyTorchを用いてニューラルネットワークで関数近似を行うプログラムを作成する。 必要なモジュールのインポート 必ずしも必要でないが、ここではtorch.utils.dataをインポートしtorch.utils.data.TensorDataset、torch.utils.data.DataLoaderを 用…

ニューラルネットワークで論理演算子 OR を学習する

はじめに 業務にて深層強化学習の利用を目指す。まずは簡単な例からということで、PyTorchを用いてニューラルネットワークで論理演算子 OR を学習するプログラムを作成する。 論理演算子 OR のモデル 0または1を持つ2つの入力x1, x2の少なくとも一方が1であ…