Notebookまたまたしばらくサボっていました。今回は指数対数ということで、機械学習を勉強しようと思ったことがある人はみたことがあるであろうシグモイド関数などがでてきます。概要はつかんでおきたいですね。指数と対数を個別にまとめようかと思いましたが、微分が入ってくることを考えると指数と対数はきってもきれない関係になるのでまとめてご紹介します。指数関数ってなんだっけ?指数自体はこれまでの関連記事でも普通につかってきましたし、まぁだいたいの人は知っているでしょう。以下のようにその数を何回乗算するかというものになります。指数表現では、右肩部分を指数それに対して普通の数字部分を底と呼びます。そこで、指数関数とはなにかというと、底を定数として指数部分を変数とした関数になります。指数関数と言えば、指数関数的に増加していくなどの表現が使用されることもありますが、実際のグラフで表現しておきましょう。Pythonを使います。関数1が底が正の数の場合の関数の形で、xがマイナスの極限でyが0になり、xがプラスの極限でyが無限大になる。底が負の数の場合、xがマイナスの極限でyが0になり、xがプラスの極限でyがマイナスの無限大になると。この辺はまぁ大丈夫ですかね。対数関数ってなんだっけ?対数に初めて出くわすのが数学ではいつだったかあまり覚えていませんが、いわゆるlogのことですね。対数表現では、logの右下部分の数字を底、その後に続く数字部分を真数と呼びます。対数というのはなかなか言葉での表現が難しいですが普通の数字で表現しようとすると以下のようになります。数学で対数をどのように説明されたかあまり覚えていませんが、真数が底の何乗になっているかと考えればよいでしょう。出現する対数には名前がついていおり、底が10の対数を常用対数、底がeの対数を自然対数と呼びます。自然対数の底に使用されるeはネイピア数と呼ばれ、値としては2.71828...となります。前置きが長くなりましたが、対数関数とは底が定数で、真数が変数となっている関数のことです。対数関数もPythonで表現してみます。グラフを描写するplt.show()・出力結果Python上での注意点は0付近がうまく表現しにくいことでしょうか。上記では暫定的にプロット数を増やして表現しています。対数関数は指数関数の逆関数と言われることがあります。指数関数の微分は以下の公式により表現されます。ここでのlogは自然対数となるので、以下のことがわかります。底がe(ネイピア数)の指数関数を微分すると微分前後で結果が変わらないということです。微分の定義から求めることも可能ですが、ここではPythonでの微分前後のグラフを表現してみます。関数2が関数1の微分結果を表しています。対数関数の微分公式は以下のようになります。対数の微分についても底がネイピア数の場合は、特殊なケースと捉えることができます。どちらかというと底がeであるこちらの公式の方がよく出てくるみたいですね。こちらもPythonで、微分前後の結果をグラフを表現してみましょう。関数1が微分前、関数2が微分後の反比例の関数を表しています。特殊なというよりは名前がついている関数でしょうか。シグモイド関数シグモイド関数というのは以下のような関数のことを指します。ネイピア数の指数関数はexp(x)の形で表現できるので、2行目のような式で表現することも可能です。シグモイド関数なんてきいたことない?私も機械学習にふれようとするまでは知らなかったのでたぶん大丈夫です。Pythonでどのようなグラフになるのか表現してみましょう。グラフを描写するplt.show()・出力結果グラフの形を確認すると分かりますがシグモイド関数はxの値がマイナスの無限大からプラスの無限大までで、yが0から1までの値をとることが分かります。この特徴からシグモイド関数は、確率を表現する場合やニュートラルネットワークなどの人工知能モデルの表現力を高めるために使用されるようです。一体なんだ??ソフトマックス関数とは複数の出力結果を、その大小関係を保ったままそれぞれを確率で表現するための関数のことです。※ただしいかな??確率で表すとはつまり、全ての事象(出力結果)を総和すると1.0(100%)で表現するということです。以下の3つの数値で考えてみます。このとき元の値のexpを求めます。expのとりうる範囲は0以上となるので、マイナス値が入っていても正の数の範囲で値を大きさとして表現することが可能となるのです。ソフトマックス関数の公式は以下の通り(要素3つの場合)です。それぞれの値は分母に3つの合計となるuとすることで合計が1となるようにします。手計算で求めるのはしんどいのでPythonで求めましょう。詳細は省きますがシグモイド関数とソフトマックス関数は微分すると以下のような形になります。細かいところは私も理解しきれませんでした。微分後の式の形が同形になっていることがわかります。これはシグモイド関数とソフトマックス関数自体が根本的に同じ形であることからきています。2つの要素に対するソフトマックス関数を考えます。公式の分子分母にexp(x0)を乗算することにより式を整理すると上記のようになります。変数を(x0-x1)としたシグモイド関数ということができます。式の意味からとらえると、シグモイド関数は特定の値を0~1の範囲に値を変換するものなので、ソフトマックス関数はシグモイド関数を多変数に拡張した概念と捉えることができます。ガウス関数ガウス関数は以下のような式で表されます。Pythonでグラフの形を確認してみます。グラフを描写するplt.show()・出力結果グラフの形を見るとなんとなく想像がつくかもしれませんが、正規分布を表す関数になります。μが平均、σが標準偏差を表し、aでグラフの高さを調整します。【二次元のガウス関数】ガウス関数は入力をベクトルなどに置き換え、二次元に拡張して用いられることがあります。グラフ上では三次元になるということです。入力を二次元ベクトルとした場合は以下のようになります。グラフの形はμとΣのパラメータによって定まります。μは中心ベクトルと言われるもので、グラフの中心を表します。Σは共分散行列と言われるもので、2×2の正方行列です。sigma)Ax.set_xlabel('$x_0$',fontsize=14)Ax.set_ylabel('$x_1$',fontsize=14)Ax.set_zticks([0.05,0.10])Ax.view_init(20,-100)plt.show()・出力結果うーん難しい。その5(行列2)長くなってきたので一旦切りました。回帰編(多次元モデル)【Docker】sudoなしでDockerコマンドを実行する月別アーカイブはてなブログをはじめよう!wantanBlogさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。