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

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

Deep Learning

FastAI (deep learning library built on top of PyTorch)

FastAI 概要と特徴 概要 特徴 分類と概念 上位概念 下位概念 メリット デメリット 既存との比較 PyTorchとの比較 TensorFlow/Kerasとの比較 競合 導入ポイント 注意点 今後 関連キーワード FastAI 概要と特徴 fast.ai—Making neural nets uncool again – fas…

MatrixFlow 概要

MatrixFlow 概要 MatrixFlowの特徴 MatrixFlowの分類 MatrixFlowの上位概念・下位概念 MatrixFlowのメリット MatrixFlowのデメリット 既存ツールとの比較 MatrixFlowの競合 MatrixFlowの導入ポイント MatrixFlowの注意点 MatrixFlowの今後 関連キーワード Ma…

OpenVINO 概要

OpenVINO 概要 特徴 分類 メリット デメリット 既存との比較 競合 導入ポイント 注意点 今後 関連キーワード OpenVINO 概要 Intel® Distribution of OpenVINO™ Toolkit OpenVINO(Open Visual Inference and Neural network Optimization)は、インテルが開…

Deep Learning 知識蒸留(Knowledge Distillation)概要

cf. https://pytorch.org/tutorials/beginner/knowledge_distillation_tutorial.html Deep Learning 蒸留(Knowledge Distillation)概要 概要 特徴 分類 上位概念・下位概念 メリット デメリット 既存技術との比較 競合技術 導入ポイント 注意点 今後 関連…

概要「ゼロから作るDeep Learning 5 - 生成モデル編」

概要 O'Reilly Japan - ゼロから作るDeep Learning ❺ 人気シリーズの第5弾 今回のテーマは「生成モデル」 「正規分布」から「拡散モデル」までの技術を繋がりのあるストーリーとして展開 読者は小さな学びを積み重ねながら、ステップバイステップで実装 最終…

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