kaeken(嘉永島健司)のTech探究ブログ

主に情報科学/情報技術全般に関する知見をポストします。(最近は、特にData Science、機械学習、深層学習、統計学、Python、数学、ビッグデータ)

Deep Learning

Gradio: Build Machine Learning Web Apps — in Python まとめ

overview quick start playground demo list overview Gradio Gradio: Build Machine Learning Web Apps — in Python Quickly Build Demos or Web Apps: Easily create a demo or web application for your machine learning model, API, or any arbitrary P…

深層距離学習(Deep Metric Learning) まとめ

深層距離学習(Deep Metric Learning) まとめ Xlgd/metric-learning-papers: A collection of metric learning papers. 距離学習の目的: データポイント間の距離を測定する機械学習アプローチ。 サンプル間の類似性を測定し、学習タスクに最適な距離メトリッ…

対照学習(Contrastive Learning)と代表手法 SimCLR まとめ

元論文 2011.00362.pdf 自己教師あり学習(Self-supervised Learning): SSLと略される。 ラベル無しデータを用いた教師なし学習の一種。 データ自身から自動的にラベルを生成し学習。 ディープラーニングを含む機械学習の一部門。 現実の問題に対し、ラベ…

1章 ニューラルネットワークの復習 / 1.1 数学とPythonの復習 |『ゼロから作るDeep Learning2自然言語処理編』

1章 ニューラルネットワークの復習 まずはニューラルネットワークを復習する章なので、復習がてらコード部分を写経。 1.1 数学とPythonの復習 1.1.1 ベクトルと行列 >>> import numpy as np # numpyインポート >>> x = np.array([1,2,3]) # np.array()メソッ…

『ゼロから作るDeep Learning2自然言語処理編』学習開始

『ゼロから作るDeep Learning2自然言語処理編』学習開始。 『ゼロから作るDeep Learning』の続編で、自然言語処理・時系列データがメインテーマ。 機械学習・深層学習の分野は、2年前に『ゼロから作るDeep Learning』を学習したときから比べて、ものすごい…

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

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

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

手書き数字認識とバッチ処理『ゼロから作るDeep Learning』

『ゼロから作るDeep Learning』3章最後 いよいよ手書き数字認識に入る。ここでは、「学習」フェーズは完了している前提で、「推論」フェーズのみ順方向伝播方式で実施。 # MNISTという手書き数字画像セットを準備 # git clone https://github.com/oreilly-ja…

出力層の設計(分類問題で使うソフトマックス関数)『ゼロから作るDeep Learning』

『ゼロから作るDeep Learning』3章続き # ニューラルネットワークの問題は、回帰問題と分類問題に大別できる # 回帰問題とは、入力データから数値予測を行う問題(例 入力:人物画像 → 出力:体重予測) # 分類問題とは、入力データがどのクラスに属するかと…

ニューラルネットワーク フォワード方向処理『ゼロから作るDeep Learning』3章

『ゼロから作るDeep Learning』3章続き。 ニューラルネットワークの順方向forward処理について。 # 順方向forward処理:入力から出力方向への伝達処理。あとで逆方向backward処理について学ぶ # 以下3層ニューラルネットワーク構成とする # 入力層(第0層) #…

Pythonで自作関数をモジュールとして読み込む

参考: Python3のimport・下位/上位階層のモジュールをインポートしたい【import】【Python3】 - DRYな備忘録 『ゼロから作るDeep Learning』で自作関数がだんだん説明なしに使われていくので、いったんモジュールにまとめて読み込むことにする。 本番環境な…

ニューラルネットワーク計算準備としてNumPyで多次元配列処理(内積=ドット積)

『ゼロから作るDeep Learning』3章続き。 ニューラルネットワークの実装で多次元配列が必要。 そこでPythonのNumPyの多次元配列操作を改めて詳しく学ぶ。 >>> import numpy as np >>> A = np.array([ [1,2], [3,4], [5,6] ]) >>> A array([[1, 2], [3, 4], […