タグ

ブックマーク / s0sem0y.hatenablog.com (24)

  • Deep Learning勉強のための書籍【2018年版】 - HELLO CYBERNETICS

    はじめに 初級編 ゼロから作るDeep Learning 中級編 scikit-learnとTensorFlowによる実践機械学習 PythonとKerasによるディープラーニング 上級編 Pro Deep Learning with TensorFlow Deep Learning はじめに ディープラーニングに関する書籍は山ほど出てきています。 その中でどれを読めば良いのか分からない、というのは初心者にとって最初の問題でもあるでしょう。まずはブログなどのネットの情報を参考に勉強をする人が多いかと思われますが、私のブログも含め、大抵は個人の興味に沿ってバラバラに話題が提供されるため、できれば1つ1つ順を追って解説してくれる物が欲しいと感じるのが音と思われます。 今回は、数ある書籍の中でも私自身が所持していておすすめできるディープラーニングの書籍を載せたいと思います。 初級編 ゼロから作

    Deep Learning勉強のための書籍【2018年版】 - HELLO CYBERNETICS
  • いろいろな主成分分析で機械学習の考え方を学ぶ - HELLO CYBERNETICS

    はじめに いろいろな主成分分析 モチベーション1:圧縮された際の誤差を最小化したい モチベーション2:圧縮先での表現力を高めたい モチベーション3:隠れたデータの発生源を知りたい モチベーション4:観測データに不確定要素があり、そのデータが得られる過程を知りたい モチベーション5:データから潜在変数の次元(あるいは圧縮の次元)まで求めたい 最後に はじめに 今回は主成分分析という機械学習でも非常に基的な手法を用いて、機械学習モデルの見方を学んでいきます。これはどういうことかというと、ある1つのモデルに対しての見方が複数あるということです。ある1つのモデルを調べあげたら他の発展が見られたというケースもありますし、元々独立に発見されたが同じものであったというケースもあります。 主成分分析の場合は「Karhunen-Loeve展開」と呼ばれる場合もあり、信号処理などの分野で独立に発見された手法

    いろいろな主成分分析で機械学習の考え方を学ぶ - HELLO CYBERNETICS
  • ディープラーニングの応用のための具体的方針まとめ - HELLO CYBERNETICS

    はじめに 目標の設定と指標の決定 目標の設定 指標の決定 評価指標に対する最低限の知識 機械学習における知識(補足) ニューラルネットワークの学習 最初に使うニューラルネットワーク 時間的にも空間的にも独立である複数の特徴量を持つデータ 空間の局所的な構造に意味のある多次元配列データ(例えば画像) 時間的な変動に意味のあるデータ(例えば音声、自然言語) ニューラルネットワークの細かい設定 ユニットの数と層の数 正則化 活性化関数 ドロップアウト バッチ正規化 学習の早期終了 性能が出ない場合 データの追加収集 ニューラルネットの設定をいじる 用いるニューラルネット自体を変更する 新たなニューラルネットワークの考案 コードを書くにあたって データ成形 結果を記録するコード フレームワークの利用 フレームワークの選択 ChainerとPyTorch TensorFlow Keras 最後に は

    ディープラーニングの応用のための具体的方針まとめ - HELLO CYBERNETICS
  • 機械学習で抑えておくべき損失関数(分類編) - HELLO CYBERNETICS

    はじめに ニューラルネットワーク 損失関数を考えるモチベーション 分類の損失関数 0−1損失関数 分類における損失関数の基 0-1損失の問題点と代理損失 色々な損失関数 分類の損失を考える上で重要な「正解と出力の積」 ロジスティック損失 指数損失 ヒンジ損失 平滑化ヒンジ損失 損失関数の図示 0-1損失で図の見方を確認 ロジスティック損失 指数損失 ヒンジ損失 平滑化ヒンジ損失 比較 最後に モデルの方の話 実際に使う場合の話 学習の評価は「正解・不正解」だけでない 回帰における損失関数 はじめに 機械学習における教師あり学習では、入力に対してパラメータを用いて関数を構築し、正解データに対して損失を定義し、これを最小化する手続きを取ります。 損失を、色々なとの組に対して計算し、その総和が最小化されるようにを決めることを学習と呼びます。これにより未知のデータを入力した時に、それに対する正解

    機械学習で抑えておくべき損失関数(分類編) - HELLO CYBERNETICS
  • リカレントネットワークの基本的な考え方 - HELLO CYBERNETICS

    リカレントネットワーク リカレントネットワークとは LSTMやGRU 今回の記事について リカレントネットワークの都合 普通のニューラルネットワークの展開図 普通のニューラルネットワーク ちょっとだけ変わったニューラルネットワーク 入力が複数あっても良い 層を飛んだ結合があっても良い リカレントネットワークの展開図 リカレントネットワークの方程式 合成関数へ持っていけるか リカレントネットワークの展開図 最後に TensorFlow Chainer 来の在り方 リカレントネットワーク リカレントネットワークとは リカレントネットワークとは、ある層の出力がもう一度その層へ入力される「回帰結合」を持つニューラルネットワーク全般のことを指します。 このような結合を持つことで、ニューラルネットは過去の情報を保持することができるようになります。実際には回帰結合の部分には何らかの変換が準備されており

    リカレントネットワークの基本的な考え方 - HELLO CYBERNETICS
  • ChainerのDefine by Runとは? - HELLO CYBERNETICS

    Define by Run Define by Run Define and Run 具体例を見る 上記のコードのネットワークにおける動作 Define by Run 今回は、Chainerの特徴の1つであるDefine by Runについて、どんなものであるかを理解できるようにします。 Define by Run Define by Runでは、計算グラフ(ニューラルネットの構造)の構築をデータを流しながら行います。 Define and Run Define and Runでは、計算グラフを構築してから、そこにデータを流していきます。 これだけで違いが理解できるでしょうか? おそらく難しいかと思います。 上記の2つの違いを認識するのが目標です。 具体例を見る やはり、具体例を見たほうがつかみやすいかと思います。 Chainerの以下のコードを見てください。 どのようなネットワーク構造が

    ChainerのDefine by Runとは? - HELLO CYBERNETICS
  • ディープラーニングは動的ネットワーク構築が主流になるか? TensorFlow Fold登場 - HELLO CYBERNETICS

    動的ネットワーク構築と静的ネットワーク構築 静的ネットワーク構築 動的ネットワーク構築 動的なTensorFlowが登場 動的なネットワーク構築を行うライブラリ TensorFlow Foldの登場 どれがいいのか 動的ネットワーク構築と静的ネットワーク構築 静的ネットワーク構築 まず「静的ネットワーク構築」が基になります。 これはニューラルネットワークの構造を先に決めて、その後にデータを流して計算を行います。俗に言う「Define and Run」というやつで、非常に分かりやすい方法です。 動的ネットワーク構築 「動的ネットワーク構築」は、データを流すと同時にニューラルネットワークの構造を決めていきます。データが流れる毎にニューラルネットワークの構造が変わっても構いません。俗に言う「Define by Run」によって実現されています。 (参考) ChainerのDefine by R

    ディープラーニングは動的ネットワーク構築が主流になるか? TensorFlow Fold登場 - HELLO CYBERNETICS
  • 抑えておきたい評価指標「正解率」「精度」「再現率」 - HELLO CYBERNETICS

    評価の指標を1つじゃない はじめに 正解率 再現率 精度 分割表 評価の方法 精度と再現率のトレードオフ F値 break-even 注意点 参考 評価の指標を1つじゃない はじめに 機械学習による分類を行った場合に、その手法が従来より優れているか否かを判断したいという場面に遭遇します。 その際、分類を適切にできた数の割合である「正解率」に着目したくなりますが、実は評価の方法はコレ以外にも複数存在します。 正解率 正解率は、テストデータが個ある際に、予測結果が正解であった数をとして で表現されます。 最も直感的で分かりやすい評価指標です。 再現率 クラス分類でクラスがの個があったとしましょう。 「再現率」という場合には、「クラスに対する精度」という具合に、あるクラスについて評価をすることになります。 クラスのテストデータが個あるとしましょう。理想的には学習によって得られた分類器が、個のデー

    抑えておきたい評価指標「正解率」「精度」「再現率」 - HELLO CYBERNETICS
  • ニューラルネットワークの学習の工夫 - HELLO CYBERNETICS

    はじめに 伝統的な学習の工夫 正規化、標準化、無相関化、白色化 正規化 標準化 無相関化 白色化 正則化 正則化 正則化 elastic net 伝統的な工夫について ニューラルネットワークの学習の工夫 バッチ正規化 ドロップアウト ノイズ混入 勾配ノイズ ニューラルネットの学習の工夫 はじめに 従来の機械学習手法では、なるべく入力と出力の関係を人手で明らかにすることで、妥当なモデルを準備してきました。更に入力データも、学習にとって重要なもののみを抽出することで、効率性を高めてきました。 一方でニューラルネットワークは入力と出力の間に複雑なモデルを仮定し、その複雑なモデルを学習により上手く調整することで回帰や分類を行います。 このような背景から、ニューラルネットを従来の手法と同じように学習させるのでは上手く行かないことが分かります。人手で抽出しなければいけなかった情報や、適切に設計しなけれ

    ニューラルネットワークの学習の工夫 - HELLO CYBERNETICS
  • クラスタリングの基本 - HELLO CYBERNETICS

    はじめに クラスタリングと教師なし学習 教師なし学習 クラスタリング クラスタリングの手法 凝集型クラスタリング 重心法 単連結法 完全連結法 まとめ k-means 発展的話題 はじめに クラスタリングとは機械学習手法の1つであり、通常は「教師なし学習」によって実現されます。今回はクラスタリングの使いドコロや、通常の判別などと何が違うのかを理解し、基的な手法を確認することを目的とします。 クラスタリングと教師なし学習 教師なし学習の全てがクラスタリングというわけではありません。あくまで、教師なし学習の中にクラスタリングというものがあるというイメージです。教師なし学習とクラスタリングがいったいそれぞれ何なのかを説明していきます。 教師なし学習 データがあったとしましょう。機械学習をするという場合には、何らかの評価関数を使って関数を決定します。 仮に「教師あり学習」の場合は、データに対して

    クラスタリングの基本 - HELLO CYBERNETICS
  • kerasとchainerの違い - HELLO CYBERNETICS

    KerasとChainer Keras Chainer 比較 Kerasの役割 Chainerの役割 Kerasでの実装 Chainerでの実装 使い分け Chainerがいいなあ Googleの強さ 使い分け KerasとChainer Keras KerasはTensorFlowあるいはTheanoをバックエンドとして、簡単にニューラルネットを記述することができます。もともとはTheano用でしたが、TensorFlow登場後に対応しました。開発者の中にはGoogleの方もいます。 s0sem0y.hatenablog.com Chainer 日製の深層学習ライブラリ。 ニューラルネットワークに必要な計算を柔軟に設計できます。行列などの計算としてはNumpy(GPU用にCupy)をしようしており、純粋にPythonで実装されているライブラリです。 s0sem0y.hatenablog

    kerasとchainerの違い - HELLO CYBERNETICS
  • フーリエ解析の基本 - HELLO CYBERNETICS

    はじめに フーリエ解析とは フーリエ級数展開 フーリエ変換 フーリエ解析の心 フーリエ級数展開を考える理由 微分が簡単になる 微分方程式への応用 線形システム論 フーリエ解析の応用 線形システム解析 信号処理 制御工学 スペクトル解析 パワースペクトル 発展トピック はじめに フーリエ解析とは フーリエ解析は現代科学での重要な解析手法になっており、その基はフーリエ級数展開やフーリエ積分(フーリエ変換)などに基づいています。この2つに関してはフーリエ級数展開がまず研究され、その後発展形としてフーリエ変換が導出されることとなりました。 フーリエ級数展開とフーリエ積分の数学的な性質には当前差異がありますが(この差異によって数学的には興味深い研究が進みました)、元々どういう理由で生まれてきたのかという人間の要望に関しては共通する部分があります。 まずは是非フーリエ級数展開を用いようという心を理解

    フーリエ解析の基本 - HELLO CYBERNETICS
  • 畳み込みニューラルネットワークの基礎 - HELLO CYBERNETICS

    事前知識 テンソルで理解しておくべきことは意外と少ない 畳み込みとは 畳み込み 畳み込みニューラルネット 畳み込みニューラルネットの畳み込み処理 空間フィルタ 畳み込み層 RGB画像を扱う場合 畳み込み層まとめ 分類の方法について プーリング層 活性化関数 全体のまとめ 事前知識 テンソルで理解しておくべきことは意外と少ない 畳み込みニューラルネットワークでは非常にたくさんの添字が現れます。 しかし決して難しいものではありません。実はとてもシンプルな処理を繰り返しているだけです。そのことを理解するためには、テンソルの概念を知っておくと便利です。 言葉が聞き慣れないだけで全く難しくありません。 テンソルのインターネットで検索すると何やら難しい話が出てきます。 以下はWikipediaの引用です(読む必要ありません。テンソルって聞くとこんな話が出てきますが、気にしないでくださいということが言い

    畳み込みニューラルネットワークの基礎 - HELLO CYBERNETICS
  • カーネル法 - HELLO CYBERNETICS

    ディープラーニングが現れる以前の機械学習で一斉を風靡した学習機械と言えばSupport Vector Machine(SVM)ですね。このSVMが大活躍した背景には、線形回帰・分離の手法を非線形へ拡張するカーネル法の存在がありました。 今回はそのカーネル法について解説します。 機械学習における非線形な問題の基的な考え方は、線形では扱えなさそうなデータに対して変換を施して、その変換先で線形な処理ができるようにすることです。 ではそのような上手い変換はいかにして獲得されるのでしょう。その変換先での空間の次元はいくつにすべきでしょう。様々な問題が浮上しますが、カーネル法では陽に変換の具体的な形を扱うことなく、内積演算(すなわちスカラー値)だけによって問題を解決します。 ニューラルネットでは上手い変換を学習によって獲得するため、高い表現能力を得る一方、学習の時点で多大なる時間を要するのが問題でし

    カーネル法 - HELLO CYBERNETICS
  • ニューラルネットワークによる学習の停滞はどこから生ずるか - HELLO CYBERNETICS

    現在機械学習ではディープラーニングの活躍が目立っています。 その基礎はニューラルネットワークの学習にあり、この学習を知っているのとそうでないのとでは、各手法に関する理解度が大きく異なってくるものと思います。 今回はニューラルネットワークの学習における不思議の1つ、「学習の停滞」の原因について述べてみたいと思います。 はじめに 勾配法 勾配法 具体的な例題 学習が停滞する原因 勾配法の落とし穴 学習が停滞し、再び進む原因 鞍点はどこから現れるのか 勾配が「」になる点 パラメータを少し変更しても、損失関数がまったく変化しない点 簡単な例 特異点 まとめ はじめに ニューラルネットワークでは学習が停滞したと思いきや、しばらく学習を根気強く続けていると、学習が進むときが訪れます。既にニューラルネットワークのプログラムを動かしたことがある人ならば経験したことがあるでしょう。なぜに学習が停滞し、そして

    ニューラルネットワークによる学習の停滞はどこから生ずるか - HELLO CYBERNETICS
  • ディープラーニング最適化の有用記事 - HELLO CYBERNETICS

    ディープラーニングの勉強を進める中で有用だった記事を載せておきます。 勾配法のまとめ記事 最適化から見たディープラーニングの考え方 通常の機械学習における最適化の視点 勾配法のまとめ記事 postd.cc 私のブログにたどり着く以前に、既に知っている方も多いと思います。 AdaGradから始まり、Adamまで、現在のディープラーニングに使われている最適化手法をそれぞれ比較してまとめてあります。アルゴリズムも掲載されているため、ここを参考に実装することも可能でしょう。 最適化から見たディープラーニングの考え方 ci.nii.ac.jp オペレーションズ・リサーチ学会のサーベイ論文です。 工学系大学、または大学院レベルの数学がわかれば読み進めることができます。 日語文も詳しいので、数式が分からなくともディープラーニングの学習の概観をつかむには良いでしょう。Adadeltaなどの最適化手法につ

    ディープラーニング最適化の有用記事 - HELLO CYBERNETICS
  • 機械学習のための確率基礎とベイズの定理 - HELLO CYBERNETICS

    今回は機械学習の数式を追えるようになるために必要と思われ確率の基礎を記事にします。数式を追うための講座なので、確率がなんたるものなのかはある程度知っている前提とし、様々な確率の公式や定理がどのように使われるのかを見て行きたいと思います。 複雑な機械学習への応用を見る前に、個々の公式がどのように適用されるのかを個別に見ておく方が今後の理解に繋がるかと思います。 確率の基礎式 総和が1:確率密度関数 期待値 確率の乗法定理 確率の加法定理 周辺化 ベイズの定理 ベイズの定理の詳細 機械学習におけるベイズの定理 事後分布 尤度関数 事前分布 周辺尤度・エビデンス ベイズ更新 勉強を進めるには 確率の基礎式 総和が1:確率密度関数 まず確率を数式として取り扱う際にメインとなるのは確率密度関数です。 確率密度関数とは以下のような性質を持っています。 というものです。 離散的に書き表した場合は、 とな

    機械学習のための確率基礎とベイズの定理 - HELLO CYBERNETICS
  • 一次元の正規分布から多次元正規分布へ - HELLO CYBERNETICS

    確率・統計の基礎的な数式・統計量が分かるようになったところで、機械学習に進もうと思ってぶつかるのが多次元の壁です。一次元なら分かるんだけども、多次元になるとサッパリわからないというのは、線形代数の数式がわからないからに他ならないのですが、今回は具体的に計算を追っていくことで多次元への拡張を見たいと思います。 これを見ても全く怖じけなくなるところを目指しましょう。 基的な確率・統計の知識 平均 分散 共分散 相関係数 独立性 多次元正規分布へ 一次元の正規分布 特別な多次元標準正規分布 ベクトル、行列を用いた平均と分散の表記 一般の多次元正規分布の概観 一般の多次元正規分布の導入 基的な確率・統計の知識 確率変数などの基的なことは理解しておいてください。 s0sem0y.hatenablog.com 平均 確率変数の平均とは、の期待値のことです。 確率密度関数をとしての平均は となりま

  • 機械学習の数学基礎 - HELLO CYBERNETICS

    機械学習関連の勉強を始めようと思うときに必ず立ちはだかるのが数学の壁です。いまや機械学習は理系のみならず、数学にさほど関わりがなかった文系の人たちにとっても興味のある話題となっています。 そこで機械学習で必要な数学の基礎をまとめてみたいと思います。まず、機械学習の勉強を始めるにあたって最低限必要な数学というのは実はそんなに多くありません。数学の全てを知ろうとするのではなく、最低限必要なものを抑えてから、個々の手法を使いながら更に深ぼっていけばイイと思います。ここではその最低限必要だと思う数学を題材にします。 必要なのは大雑把に言ってしまえば 線形代数 微分積分 確率・統計 のみです。もちろん更に深く理論を知ろうと思えば、もっといろいろな数学が必要になってきますが、機械学習の具体的な手法が何をしようとしているのかというのを、数式を追って確認する分にはこれくらいで大丈夫なはずです。更にこれらの

    機械学習の数学基礎 - HELLO CYBERNETICS
  • 独立成分分析の基礎と主成分分析との比較 - HELLO CYBERNETICS

    独立成分分析は、主成分分析に変わる有効な信号処理手法です。 主成分分析との違いをサラッと紹介した後に、独立成分分析の学習手法を紹介したいと思います。 ちなみに、面倒なのでベクトルをボールド体で表現することはしません。全部ベクトルや行列だと思ってください。一次元のベクトルをスカラーだと思えば、特に区別する必要はないと思います。 ブラインド信号源分離(以後BSS) 主成分分析 独立成分分析 主成分分析との違い 独立性の計り方と勾配法 ブラインド信号源分離(以後BSS) ブラインド信号源分離とは以下のような問題です。 個々の信号ベクトルに対して観測信号ベクトルが変換行列によって、線形結合されて得られる場合に、元の個々の信号を復元しようというものです。 となっているということです。これに対して を求めれば、問題は解けることになります。 となって、知りたかった個々の信号が取り出せるというわけです。

    独立成分分析の基礎と主成分分析との比較 - HELLO CYBERNETICS