人工知能エンジニア修行日記

主に人工知能、機械学習、深層学習、Python、数学について覚え書きを記します

『ゼロから作るDeep Learning』数学用語一覧

『ゼロから作るDeep Learning』に出てくる数学用語について調べていく。 ただ、定義だけ追っていても意味が分からないので、 実際の使われ方については、高校レベルの数学を別途復習が必要。 では、以下数学用語を列挙していく。 線形とは https://ja.wikipe…

『Pythonからはじめる数学入門』7章(後半) 初等解析問題を解く / 高階微分および積分

『Pythonからはじめる数学入門』7章(後半) 初等解析問題を解く の解説です。 7.5 高階微分と極大極小の計算 Derivativeクラスを使った微分オブジェクトのデフォルトは、 1階微分です。 高階微分をおこなうには、階数を第三引数に渡します。 ここでは、関数…

『Pythonからはじめる数学入門』7章(前半) 初等解析問題を解く

『Pythonからはじめる数学入門』7章(前半) 初等解析問題を解く に関する解説です。 7.1 関数とは何か 7.1.1 関数の定義域と値域 数学そのものの説明は省略しますが、用語を記しておきます。 写像mapping 定義域domain 値域range 7.1.2 よく使われる数学関…

『Pythonからはじめる数学入門』5章 集合と確率を操作する

『Pythonからはじめる数学入門』 5章 集合と確率を操作する の解説です。 5.1 集合とは何か 集合(set)、要素(element)といったキーワードの意味は、高校数学で出てきていますのでここでは省略します。 以下、Pythonで集合の演算方法をみていきます。 5.1.1 …

『Pythonからはじめる数学入門』4章 SymPyで代数と式を計算する

『Pythonからはじめる数学入門』 4章 SymPyで代数と式を計算する の解説です。 いままでは、数値計算でしたが、 xやyといった代数においては、 式の計算(symbolic math)が必要です。 Pythonでは、SymPyを使って式の計算をおこないます。 以下は、SymPyのリフ…

『Pythonからはじめる数学入門』3章 データを統計量で記述する

『Pythonからはじめる数学入門』 3章 データを統計量で記述する の解説です。 機械学習では、 統計がよく出てくるので、 ここでは、統計の基本をPythonで学びます。 3.1 平均を求める まずは、平均値を求める関数です。 def calculate_mean(numbers): s = su…

『Pythonからはじめる数学入門』2章 データをグラフで可視化する

『Pythonからはじめる数学入門』 2章 データをグラフで可視化する の解説です。 www.oreilly.co.jp 機械学習で数値データを提示する際には、 グラフを用いることが多いです。 今回は、 Pythonでグラフを使う方法についてご説明します。 2章 データをグラフで…

1章 数を扱う / まずは基本的な演算と数の種類を把握『Pythonからはじめる数学入門』

機械学習を学ぶ際に、Pythonでの数式表現でつまづくことがある。 そこで、 『Pythonからはじめる数学入門』 をコツコツ通読&コマンドを打つことで、 数式表現に慣れていく。 まずは、 基本的な演算と数の種類を把握。 数値処理に強いPythonっぽいメソッドも…

データサイエンティスト(DS)になるためのスキルチェックシート

一般社団法人データサイエンティスト協会 という団体からデータサイエンティスト(以下DS)になるための目安となる スキルチェックシートが提供されている。 DSスキルチェック | Data Scientist Society Journal DSスキルチェック | Data Scientist Society Jo…

「新しい人工知能の教科書」は教科書ではなくカタログ

まずは先に人工知能の全体像を確認。 「新しい人工知能の教科書」を通読したが、この本は教科書というより知識のカタログ。 各知識の概要紹介と、参照資料をもとに、自分で深堀していく必要がある。 www.shoeisha.co.jp 【目次】 CHAPTER1 人工知能の過去と…

機械学習プロフェッショナルシリーズ一覧

機械学習プロフェッショナルシリーズというシリーズ本がある。 機械学習プロフェッショナルシリーズ | 書籍情報 | 株式会社 講談社サイエンティフィク 以下、既刊本。出版時期ごとに勝手にナンバリング。 1-1 機械学習のための確率と統計 978-4-06-152901-4 …

Deep Learning用語 日本語一覧

続いて、Deep Learning用語 日本語一覧。 こうして一覧にしてみると、うまく説明できない用語もあったり、スキップしたワンポイントコラム記事で言及されていた用語もあり、まだ復習が必要だ。 余談だが、最近は、だんだん人工知能視点になってきた。 「どこ…

Deep Learning用語一覧(英語)

『ゼロから作るDeep Learning』で深層学習を学び、自分自身の物理ニューラルネットワーク=脳を訓練中だが、一通り用語を一覧にした。 理論、実装、その他さまざまな用語が混ざっているが、これらを見ながら説明できない用語をピックアップして、本書を復習…

CS231n: Convolutional Neural Networks for Visual Recognition

『ゼロから作るDeep Learning』で何度も言及されていたスタンフォード大学の講義資料を参照する。 CS231n: Convolutional Neural Networks for Visual Recognition cs231n.github.io http://cs231n.stanford.edu/syllabus.html 英語は日常的に使っていないが…

8章 ディープラーニングDL『ゼロから作るDeep Learning』

本書の最後の8章は、現在のDLを俯瞰した説明なので、目次に合わせてメモ書き。 8章 ディープラーニング 8.1 ネットワークをより深く 8.1.1 よりディープなネットワークへ 8.1.2 さらに認識精度を高めるには これまで論文発表された手法の認識精度ランキング…

7章 畳み込みニューラルネットワークCNN 畳み込み層とプーリング層の実装『ゼロから作るDeep Learning』

↓ 7章 CNNの実装について。 畳み込み演算では、4次元データを処理する必要がある。 (batch_num, channel, hegiht, width) そこでフィルタにとって都合の良い入力データを展開する関数im2colを使用する def im2col(input_data, filter_h, filter_w, stride=…

畳み込み演算を図解するライブラリconv_arithmetic

7章のCNNで畳み込み演算を図解するツールを探していたら以下を見つけた。 github.com パディングやストライドの条件を指定できる。 texを使って記述するようだが、texはそれほど詳しくないので、必要に応じて調べておく。 文章や数式だけでは理解しづらい場…

7章 畳み込みニューラルネットワーク 畳み込み層Convolution layerとプーリング層Pooling layer『ゼロから作るDeep Learning』

さて、いよいよ畳み込みニューラルネットワークConvolution Neural Network, CNNまで来た。 最新の画像認識・音声認識でほぼ使われているCNNをじっくり理解していく。 CNNでは、今までのレイヤに、 畳み込み層Convolution layer プーリング層Pooling layer …

深層学習用の数学プログラミングは『Pythonからはじめる数学入門』より『行列プログラマー』かも

以下、手を動かしていないが、いったん通読完了。 www.oreilly.co.jp 目次 1章 数を扱う 1.1 基本数学演算 1.2 ラベル:名前に数を割り当てる 1.3 さまざまな種類の数 1.3.1 分数を扱う 1.3.2 複素数 1.4 ユーザ入力を受け取る 1.4.1 例外と不当入力の処理 1…

6章 学習に関するテクニック ハイパーパラメータ(hyper-parameter)の検証 『ゼロから作るDeep Learning』

6章 最後に、ハイパーパラメータ(hyper-parameter)の検証について。 ハイパーパラメータは人為的に試行錯誤しながら調整がするので検証が必要である。 しかし、汎化性能を評価するには、最終的に評価するための本番のテストデータが使えない。 そこで、ハイ…

6章 学習に関するテクニック 正則化, Weight decay, Dropout 『ゼロから作るDeep Learning』

続いて、正則化について。 過学習overfittingの起きる主な2つの原因 ・パラメータを大量に持ち、表現力の高いモデルであること ・訓練データが少ないこと 敢えて過学習させたケースをサンプルコードで確認する # cat overfit_weight_decay_pre_save.py # co…

6章 学習に関するテクニック Batch Normalization 『ゼロから作るDeep Learning』

6章 学習に関するテクニック『ゼロから作るDeep Learning』 続いて、Batch Normalization Batch Normalization(Batch Norm)とは:ミニバッチごとに正規化する手法。 メリット: 学習を速く進行させることができる 初期値にそれほど依存しない(初期値にロバ…

6章 学習に関するテクニック 推奨される重み初期値 『ゼロから作るDeep Learning』

6章 学習に関するテクニック 『ゼロから作るDeep Learning』 続き。 重みの初期値について。 結論として、重みの初期値をゼロにするのはNG。 重みの対照的な構造を崩し、ランダムな初期値を設定する。 勾配消失gradient vanishing:逆伝播での勾配の値が徐…

6章 学習に関するテクニック SGDとMomentum, AdaGrad, Adam 『ゼロから作るDeep Learning』

6章 学習に関するテクニック この章では、NN学習でキーとなるアイデアについて学ぶ。 パラメータの更新 重みの初期値 Batch Normalization 正則化 ハイパーパラメータの検証 まとめ パラメータの更新について。 最適化optimizationとは:NN学習目的である「…

5章 誤差逆伝播法(ごさぎゃくでんぱほう)Backpropagation『ゼロから作るDeep Learning』

5章誤差逆伝播法 いよいよ誤差逆伝播法まできた。 数式より計算グラフの方が理解しやすいらしい。 詳しくは本書参照。 まずはレイヤ概念の導入。 レイヤ(層)とは:NNにおける機能の単位を指す。レイヤ単位で実装することで、ブロックのように積み上げていけ…

ニューラルネットワークを図解するためグラフ描画ツールgraphviz導入

こんな感じのグラフがスクリプトで作成できるgraphviz 以下、ギャラリー。 Gallery | Graphviz - Graph Visualization Software まずは、インストール。 # まずは、Anacondaでgraphvizパッケージをインストール conda install -c anaconda graphviz=2.38.0 #…

2〜4章まとめの確認問題『ゼロから作るDeep Learning』

いったん4章までの復習がてら、2・3・4章末まとめから問題を作成してみる。 2章 ・パーセプトロンは、ある◯◯を与えたら、決まった◯◯を行うアルゴリズムである。 ・パーセプトロンでは、◯◯と◯◯をパラメータとして設定する。 ・パーセプトロンを用いれば、◯…

4章ニューラルネットワークの学習 学習アルゴリズムの実装『ゼロから作るDeep Learning』

4章続き。 学習アルゴリズムの実装 改めて学習とは:適応可能な重みとバイアスを訓練データに適応するように調整すること 学習の4ステップ ステップ1:ミニバッチをランダムに選択 ステップ2:ミニバッチの損失関数を減らす勾配を算出 ステップ3:重みパ…

4章ニューラルネットワークの学習 数値微分、偏微分、勾配法、学習率『ゼロから作るDeep Learning』

『ゼロから作るDeep Learning』4章続き。 微分とは:ある瞬間の変化量 数値微分numerical differentiationとは:微小な差分によって微分を求めること def numerical_diff(f, x): h = 1e-4 #0.0001程度の値が適当な微小値 return ( f(x+h) - f(x-h) ) / (2*h)…

4章ニューラルネットワークの学習 データ駆動アプローチ、損失関数、ミニバッチ『ゼロから作るDeep Learning』

3章ではニューラルネットワークの「推論」を実装したが、4章からニューラルネットワークの「学習」を実装する。 「学習」とは:訓練データから最適な重みパラメータ値を自動で獲得すること パラメータの数は、実際数千〜数億にも及ぶため、手動で調整するこ…