サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
qiita.com/kuroitu
対象者 本記事は理論的なお話ですので、実装ベースで学習中の人はスルーしてくださっても大丈夫です。 「ディープラーニングと物理学」という本に書かれている内容(本記事では2章について)について、自分なりに解釈したものをなぐり書きしています。物理の視点から深層学習に切り込んでいてなかなか面白い本でした。理論ばっかりですが全体的にかなり噛み砕いて説明してありますので、そんなに読みにくい印象はないですね。もちろん理解できるかは別の問題です泣 目次 数学的な定式化 VC次元 PACモデル 仮説 仮説集合 PACモデルの問題点とVC次元 過学習と汎化の難しさ おわりに 数学的な定式化 まずは必要な定式化を行います。 機械学習の目的は「未知のデータに対する予測を得ること」ですね。この時重要なのは 「私たちは与えられた環境(ルール)に関する知識を持っていない」 という前提があることです。 例えばサイコロのそ
概要 時間のかかる処理を実行した時、応答がないと「今どれくらい処理が進んでいるのか」「というか動いているのか」などなど、不安になることってありませんか?ありますよね?そう、あるんですよ(3段活用)。 ということでループ処理の進捗状況を表示する方法を覚書しておきます。 ↓↓↓ちなみにこんな感じです↓↓↓ 何かの役に立ちましたらぜひLGTM・ストック・コメントいただけると嬉しいです。 Vimmerはよければこちらもどうぞ見てってください↓ VimでPython書きたい人へ 深層学習についても実装混じりでいろいろ書いてます(DNN〜CNNまで)↓ 深層学習入門 ~基礎編~ 目次 パッケージtqdmの利用 tqdmでネストループの進捗表示 自分で作ってみる エスケープシーケンス プログレスバーを作ってみる 発展:ANSIエスケープコード 20/11/17追記 パッケージtqdmの利用 進捗表示の王
\newcommand{\argmax}{\mathop{\rm argmax}\limits} \newcommand{\argmin}{\mathop{\rm argmin}\limits} 対象者 今回は深層学習ではなく機械学習の一手法である勾配ブースティング決定木について覚書しています。 Kaggleなどで大活躍中(らしい)のXGBoostやLightGBMなどで用いられている機械学習手法について、最初からざっくり知りたい方はどうぞ覗いてください。 目次 勾配ブースティング決定木とは 勾配降下法 アンサンブル学習 バギング ブースティング スタッキング 決定木 Level-wise tree growth Leaf-wise tree growth 勾配ブースティング決定木のアルゴリズム 勾配ブースティング決定木の特徴 XGBoost LightGBM GOSS GOSSアルゴリズ
対象者 深層学習の最適化手法である確率的勾配降下法をまとめてみました。 といっても、こちらにまとめられている数式と論文を基に、初期値や論文に載っていなかった定数の決定などをPytorch、Keras、Chainerなどの実装を参考に行ったものをまとめただけです。 数式などは実装ライクにまとめますので、自分で実装してみたい人は見ていってください。 間違いなどがあれば気軽にご指摘ください。 また、新しい最適化手法の情報をお持ちの方や、作成中の最適化手法についても是非教えてください! こちらで探索平面ごとの挙動の違いを紹介しています。 こちらにて実装コードを公開しています。ご自由にご活用ください。 目次 はじめに 最急降下法とは 確率的勾配降下法とは 実装ベース SGD Momentum SGD NAG AdaGrad RMSprop AdaDelta Adam RMSpropGraves SM
def backward(self, grad): """ 逆伝播の実装 """ dact = grad*self.act.backward(self.x, self.y) self.grad_w = dact*self.x self.grad_b = dact self.grad_x = dact*self.w return self.grad_x 中間層はこのままでOKですが、出力層については処理を一部追加する必要がありますね。 後ほど触れます。 行列での逆伝播 続いて行列での逆伝播を考えてみましょう。こちらは非常に数式が多く大変ですが、きちんと追いかけてみるとわかるはずです。 先ほどと同じように数式に色を振って、ぱっと見でわかるようにしようと思います。気が重い... 行列での逆伝播理論 以下の計算グラフを考えます。 順伝播で使ったものと同じですね。2ニューロンしかないレイヤーモデルで
x = np.pad(x, [(0, 0), (0, 0), (pad, pad), (pad, pad)], "constant") とすればOK、ぐらいしか書いてないのではないでしょうか。 ということで、この関数を徹底解剖します。 公式ドキュメントには numpy.pad(array, pad_width, mode='constant', **kwargs) のように引数が指定されると書いていますね。まずはそれぞれ見ていきましょう。 第一引数について まずは公式ドキュメントを見てみましょう。 array : array_like of rank N The array to pad. 和訳すると、 array : ランクNの配列かそれに類するもの パディング対象の配列 となります。ランク(階数)とは線形代数の専門用語で、まあここでは次元数という認識でいいんじゃないでしょうか...詳し
対象者 深層学習シリーズの記事です。 前回の記事はこちらです。 ここでは順伝播について、まずはスカラでの理論を説明して、それから行列に拡張します。 前回記事で紹介したコードに追加していったり修正していく形となるので、まずは前回記事からコードを取ってきておいてくださいね〜 次回の記事はこちら 目次 スカラでの順伝播 スカラでの順伝播理論 スカラでの順伝播実装 行列での順伝播 行列での順伝播理論 行列での順伝播実装 __init__メソッドの実装 行列演算について 行列和 行列の要素積 行列積 転置 スカラでの順伝播 ここでは、スカラ(実数)での順伝播の理論と実装を説明します。といっても、だいたい基礎編で既に述べている通りです。 スカラでの順伝播理論 まずは理論ですね。 このニューロンモデルから見ていきます。 これを定式化すると$f(x) = \sigma(wx + b)$となることはここで述
対象者 前回の記事の続きです。 本記事ではこれからコーディングしていくための準備をします。 自分で実装したいけどなかなか...という方はぜひ見ていってください。 (基本的に複雑なテクニックとかはぼくが使えませんのでご安心ください) コーディング環境はjupyter notebookです。 他でモジュールレベルで管理する場合はimportなどのコマンドのコメントを外してください。 もし動かなかったらコメントで教えてください... 次回の記事はこちら 目次 レイヤーモジュールのコード準備 レイヤーマネージャのコード準備 特殊メソッドの実装 __init__メソッドの実装 __repr__メソッドと__str__メソッドの実装 __len__メソッドの実装 __getitem__メソッドの実装 __setitem__メソッドの実装 __delitem__メソッドの実装 ユーザ定義メソッドの実装
対象者 活性化関数について、どんなものがあるのかまとめました。 最新のSwishとMish、さらにtanhExpも載せています! 一覧探してもなかなか良いの見つからないな〜という層をターゲットにしてます。 新しいのは見つけ次第追加します。 新しい関数の情報や、下記のTODOリストにある関数の情報をお持ちの方はぜひ教えてください! 勾配降下法もこちらでまとめています。 何かの役に立てばぜひLGTMやストック、コメントしていただけると励みになります! 更新履歴(2020/9/22~) 2020/9/22 softmax関数の微分の修正 softmin関数の微分の訂正とグラフの差し替え logSoftmax関数の微分の訂正 バッチ法、ミニバッチ法に対応したコードに差し替え メモリを犠牲に計算回数を削減する工夫をしてみました。有効かは未検証です。 2020/9/23 効果がほぼなかったので修正 2
対象者 深層学習について勉強始めたいな〜って考えている人向け。 いきなりライブラリを利用して何か作るのも手ですが、やっぱりちゃんと理解するには「車輪の再発明」しないといけませんね〜 本記事は深層学習の基礎理論メインですが、できるだけ数式を少なくして図メインでざっくり説明します。 実装などは次回以降順番にやっていこうと思います。 次回の記事はこちらです。 目次 深層学習とは ニューロンモデル レイヤーモデルとニューラルネットワークモデル 活性化関数 シグモイド関数(sigmoid) tanh関数 ReLU関数 ソフトマックス関数(softmax) 計算グラフ 足し算の計算グラフ 掛け算の計算グラフ 割り算の計算グラフ 指数関数の計算グラフ 底がネイピア数の指数関数の計算グラフ 対数関数の計算グラフ 底がネイピア数の対数関数の計算グラフ sigmoid関数の計算グラフ sigmoid関数の順伝
対象者 CNNを用いた画像認識で登場するim2col関数について詳しく知りたい方へ 初期の実装から改良版、バッチ・チャンネル対応版、ストライド・パディング対応版までgifや画像を用いて徹底解説します。 目次 im2colとは なぜ必要か CNNとは フィルタリング im2colの動作と初期の実装 im2colの動作 im2colの初期の実装 初期のim2colの問題点 改良版im2col(初期ver) 変更点1 変更点2 変更点3 多次元配列への拡張 数式で追いかける 実装してみる ストライドとパディング ストライド パディング ストライドとパディングの実装 - ストライドの実装 - パディングの実装 - 出力次元の計算 完成版im2col MNISTで実験 おわりに im2colとは im2colは、画像認識において用いられている関数です。動作としては多次元配列を2次元配列へ、可逆的に変
対象者 vimを使ってPython書きたい/書いてる人と、カラースキームの編集について知りたい人 ぼくが使っている.vimrcと、Python用のシンタックススクリプト、最後にカラースキームをご紹介します。 何かの役に立ちましたらLGTM・ストック・コメントぜひよろしくお願いします! 更新情報 2020/12/13 f-stringのシンタックスハイライトを追加しました。変更箇所へ 目次 vimrc 初めての方へ 基礎理解 コマンド 最初の設定 クリップボード経由のコピペ有効化 プラグイン管理のNeoBundle NeoBundle本体関係 カラースキーム 花文字 カラースキームを調べる ステータスラインの表示内容強化 インデント可視化 不要なスペースをハイライト 構文エラーチェック 多機能セレクタ コード補完 括弧補完 カラースキームの有効化 文字コードの設定 ステータスラインの有効化
このページを最初にブックマークしてみませんか?
『@kuroituのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く