機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

2021-04-01から1ヶ月間の記事一覧

ソフトマックス関数

定義 ソフトマックス関数はロジスティック回帰やニューラルネットワークで使われます。ソフトマックス関数は ベクトルを受け取って、 ベクトルを返す関数です。 ただし、以下の関係式が成り立ちます。特徴としては ・ ・ などがあります。 シグモイド関数と…

【Python実装】NumPyの基礎

私が忘れるかもしれないことをまとめていきます。 次元の変換 reshapeメソッドを使う以外にも以下のような方法がある。 import numpy as np a = np.array([1, 2, 3]) # a[:,np.newaxis]はa.reshape(3,1)と同じ # a[:,np.newaxis]はa[:,None]とも書ける a[:,n…

ベイズ推論による機械学習入門

素晴らしい本 タイトル通りの本で、機械学習の勉強の最初に読んでもらいたい本のうちの1冊です。素晴らしい本です。 とてもとても良い本なので買いましょう。 私は2021年4月17日現在第4章までまで読みました。第5章は流し読みした程度です。数式の行間があり…

ニュートン法による最適化 - 2クラス分類

ニュートン法 ロジスティック回帰 - 2値分類の記事より、2値分類のロジスティック回帰の誤差関数は以下の式でした。この誤差関数は局所二次近似を利用するニュートン法に基づく効率的な反復最適化手順を用いて最小化することができます。 関数を最小化するニ…

ロジスティック回帰 - 2クラス分類

確率的識別モデル 2クラス分類問題における確率モデルの場合、目的変数は2値表現が一般的です。 その表記では、クラスをで表現し、クラスをで表現する1つの目的変数が使用されます。 の値はクラスがである確率として解釈できます。である確率を出力するモデ…

ヘッセ行列をベクトルによる微分で表す

ヘッセ行列の定義 関数のヘッセ行列は以下で定義されます。上記のヘッセ行列の行列式はヘシアンまたはヘッシアンと呼ばれます。 また、ヘッセ行列は対象行列です。 ヘッセ行列をベクトルの微分で表す Matrix calculus- Wikipediaによると、ヘッセ行列はベク…

ベクトル、行列に関する微分の定義

定義 ベクトルや行列のスカラーについての微分を考える必要があることがあります。以下で、 「ベクトルのスカラーによる微分」、「行列のスカラーの行列による微分」、 「スカラーのベクトルによる微分」、「スカラーの行列による微分」、「ベクトルのベクト…

最尤推定 - 正規分布

尤度 同一の正規分布から標本が互いに独立に観察されたとします(独立同分布)。この時の尤度関数はとなります。 に対数をとります。 最尤推定 をで微分してとおきます。は標本平均と一致します。をで微分してとおきます。は標本分散と一致します。対数尤度関…

最尤推定 - 二項分布

尤度 確率で成功するフリースローを投して回成功する確率は、二項分布よりとなります。データを定数として、母数を変数として計算した値を尤度といいます。 またその関数を尤度関数といいます。 最尤推定 最尤推定法では尤度が最も大きくなったときの変数の…

【Python実装 - mglearn使用】mglearnの導入

mglearnとは mglearnとは、コードを読みやすくするためのライブラリのことで、「Pythonではじめる機械学習」の著者が作成したものです。 mglearnのインストール GoogleColabでもインストールできます。 以下を実行するだけです。 !pip install mglearn mglea…

KLダイバージェンス

KLダイバージェンスの定義 2つの確率分布及びに対して次のような期待値をKLダイバージェンスと呼びます。次の特徴があります。 ・任意の確率分布の組に対して、 等号が成り立つのは、2つの確率分布が一致する場合に限られる。 ・2つの確率分布の距離を表して…

シグモイド関数

定義 シグモイド関数はロジスティック回帰やニューラルネットワークで使われます。特徴としては ・0と1に漸近する ・に対して対象である などがあります。 シグモイド関数の微分 シグモイド関数の微分が機械学習ではよく出てくるので、それを以下で示します…

参考リンク

ブラウザのブックマークより、こちらにまとめた方が見やすいと思って本記事を作成しました。 PRML解答 サイト名説明 ゆっくりPRMLしていってね PRMLの演習問題の解答を5章から14章まで公開されています。 式変形がとても丁寧で、字もめちゃ綺麗です。 PRML演…

スライスサンプリング

スライスサンプリングは、分布の特徴に合わせて自動的に調整される適応的になステップサイズを利用する手法です。MH法の難点の一つはステップサイズに対して敏感であることです。 ステップサイズが小さすぎれば、サンプル点の移動が遅くなり、それに伴って定…

カーネルによる一般化

ソフトマージンの双対問題は以下でした。ソフトマージンの決定関数は以下でした。双対問題では、決定関数においてはの形でのみ現れることに注意してください。 これは、特徴空間の内積さえ計算できればよいということです。そこで、内積をカーネル関数として…

ソフトマージンの双対問題を最急降下法で解く

ソフトマージンの双対問題は以下でした。制約条件のみに着目して、目的関数にラグランジュの未定乗数法を適用します。をで微分します。をで微分します。 アルゴリズム 1: を初期化します。と設定します。を設定します。2: すべてのに対して次の式でを更新し…

ソフトマージンの双対問題をSMOで解く

ハードマージンの双対問題をSMOで解くと似通った記事になりますので、違いを中心に説明します。 2: の最適化 ソフトマージンの双対問題は以下でした。ハードマージンとの違いはの制約条件を考慮することです。の更新式は以下のようになります。 1: の決定方…

ソフトマージン

ハードマージンとの違い 2値分類について考えます。 訓練データがの個の入力ベクトルと それぞれに対応する目標値からなり、 未知のデータ点はの符号について分類されるとします。と、ここまではハードマージンと同じですが、違いは 訓練データは特徴空間で…

ハードマージンの双対問題をSMOで解く

SMOとは SMO(逐次最小問題最適化法)はサポートベクトルマシンの訓練で生じる2次計画問題を解くためのアルゴリズムです。 1998年にマイクロソフトリサーチのJohn Plattによって発明されました。 SMO概要 以下を繰り返します。 1: ある基準にもとづきインデッ…

射影(直交射影)

線形写像 から への線形写像はある 行列 で表されます。 これを定める基本的な方法は、 に1つの正規直交基底 を定め、 それぞれの像 を指定することです。 この時、 は次のように書けます。 は超大事です。今後多用します。実際、 に を掛けると となります…

ベルヌーイ分布のパラメータの事後分布

ベルヌーイ分布 ベルヌーイ分布は以下のように表されるのでした。 が確率変数で、がパラメータです。ベルヌーイ分布に対数を取ったものは以下のようになります。 ベータ分布 ベータ分布は以下のように表されるのでした。 は正規化定数で、以下のように表され…

ギブスサンプリング

ギブスサンプリング ある確率分布からサンプリングしたいとします。からのサンプリングは困難だが、 からはサンプリングが容易であると仮定します。以下のように、個目の各変数を1つずつサンプリングする手法をギブスサンプリングといいます。 例: 2次元正規…

一様乱数

線形合同法 一様疑似乱数生成の古典的な手法に線形合同法があります。 事前に決める整数をもとに、として、を出力します。1970年代までよく使われていた疑似乱数法RANDUはとした線形合同法でした。 RANDU法からの出力を3次元立方体に配置すると、いくつかの2…

2次関数の平行移動

2次関数を平行移動すると、1次の項が消すことができます。 以下の関数について考えます。ただし、でとします。だけ平行移動します。を満たすようにを選びます。のは定数ですので、 平行移動により2次関数から1次の項が無くなったことが確認できました。 偉人…

ハードマージン

ハードマージン 2値分類について考えます。 訓練データがの個の入力ベクトルと それぞれに対応する目標値からなり、 未知のデータ点はの符号について分類されるとします。訓練データは特徴空間で線形分離可能と仮定します。分類境界と最も近いデータ点までの…

勾配ベクトル方向に点を動かす

点から動かしたときのの増加量は です。テイラーの定理よりとなります。の2次以上の項を無視すると、となります。ここで、以下のようにおきます。よりはの時に最大となり、 の時に最小となります。よって、勾配ベクトルと同じ方向へ点を動かすと関数値は最も…

【Python実装】棄却サンプリング

本記事のアルゴリズムの記事はこちらです。目標分布を以下のベータ分布とします。正規化項は除きます。提案分布は一様分布とします。とします。 この時、を満たしています。 ############################### # 棄却サンプリング ##########################…

棄却サンプリング

本記事のPythonによる実装記事はこちらです。サンプリングする分布(事後分布)をを目標分布と言います。を満たす提案分布を選びます。 ただし、は乱数発生が容易な分布を選択する必要があります。以下の1~3を繰り返すことによりサンプリングします。1: に従…

【Python実装】モンテカルロ法

本記事のアルゴリズムの記事はこちらです。アルゴリズムが単純なので、ソースを貼り付けるだけにします。 ############################### # モンテカルロ法 ############################### import numpy as np import matplotlib.pyplot as plt # 乱数を…

モンテカルロ法

モンテカルロ法 本記事のPythonによる実装記事はこちらです。を数値的計算により求めてみましょう。以下の手順で求めます。 からまで一様乱数を使って点を発生させます。 その点が中心が原点で半径1の円の内部あるか判定します。点を100個発生させてみまし…

目次へ戻る