スキップしてメイン コンテンツに移動

Hessian Matrix

Introduction

Today, I will talk about Taylor expansion with Hessian matrix.
It is important for optimization to understand Taylor expansion with Hessian matrix. Especially, Machine learning has always situation about thinking optimization. Thus I will write it to save knowledge about Hessian matrix.

Overview

  • Definition of Hessian matrix
  • Expression Taylor expansion with vector
  • Optimality of the function
Definition of Hessian matrix
Assumption
f is a function which meets a condition as follows.
  • f output Real value after getting the n-dimensional vector.
    This vector is expressed as follows.
    \[x = [x_1,x_2,,,,x_n]\]
  • \(\forall x_i , i \in {1,2,,,n}\), f have twice partial differential

Definition Hessian matrix

Hessian matrix have \(\frac{\partial^2}{\partial x_i \partial x_j} f(x) ~in~ ~element~ ~of~ (i,j)\)
Thus Hessian matrix is expressed following.
\[ H(f) = \left( \begin{array}{cccc} \frac{\partial^ 2}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & &\ldots \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^ 2 f}{\partial x_1 \partial x_2} & \frac{\partial^ 2 f}{\partial x_2^ 2} & \ldots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^ 2 f}{\partial x_n \partial x_2} & \frac{\partial^ 2 f}{\partial x_n \partial x_2} & \ldots & \frac{\partial^2 f}{\partial x_n^2} \\ \end{array} \right) \]

Expression Taylor expansion with vector

I put Taylor expansion until the quadratic terms.
\[f(a+h) = f(a) + \nabla f(a) h + \frac{1}{2} h^T \nabla f(a) h + R_3\]
note that \(H=\nabla ^2 f\) is Hessian matrix.
Please check out the point that I put Taylor expansion until the quadratic terms
There is the reason. It is that I want to optimize f.

Optimality of the function

Definiteness

  • \(n \times n ~matrix~ A\) is positive definite
    \(\forall x \in ~n-dimentinal~ ~space~, z^T A z > 0\)
  • \(n \times n ~matrix~ A\) is negative definite
    \(\forall x \in ~n-dimentinal~ ~space~, z^T A z < 0\)
  • \(n \times n ~matrix~ A\) is positive semidefinite
    \(\forall x \in ~n-dimentinal~ ~space~, z^T A z => 0\)
  • \(n \times n ~matrix~ A\) is negative semidefinite
    \(\forall x \in ~n-dimentinal~ ~space~, z^T A z <= 0\)
\(z^T A z\) is called Quadratic form

Optimality

Now, of course, f deformed by Taylor expansion until the quadratic form is quadratic form.
Thus, We are able to judge Optimality of f.
  • if H(a)(Hessian matrix) is positive definite, f(a) is the minimum value.
  • if H(a)(Hessian matrix) is negative definite, f(a) is the maximum value.

Reference

https://ja.wikipedia.org/wiki/%E3%83%98%E3%83%83%E3%82%BB%E8%A1%8C%E5%88%97
http://www2.kaiyodai.ac.jp/~takenawa/optimization/resume10-1.pdf
http://www.dais.is.tohoku.ac.jp/~shioura/teaching/mp04/mp04-8.pdf
http://tau.doshisha.ac.jp/lectures/2008.calculus-II/html.dir/node43.html

コメント

このブログの人気の投稿

大学院試験 -外部への道しるべ-

始めに この度、 京都大学大学院情報学研究科システム科学専攻 に合格することができました!!! 僕は現在、立命館大学という関西の私立大学に通っているので、外部受験をしたことになります。 さらに、学部は数学専攻で、大学院からは情報学(の中でも機械学習)専攻になるので、専門も変えることになります。 この記事では、外部の大学院、もしくは専攻替えを考えている人向けに書こうと思っているので、目次で気になった項目があれば、ぜひ、読んでいってくださいませ。( *´艸`) ちなみに、予測点数は線形微積6~7割、専門科目満点、英語かなり低いので内緒です。(笑) 得点開示を要求するので、得点がわかったら、また追記します。 目次 外部受験を目指すまで、目指したきっかけ 外部受検の大変さ 専攻替えの大変さ 合格するために 英語が苦手な人へ 数学科の学部から情報学(機械学習)の大学院を目指す人へ 応援 外部受検を目指すまで、目指したきっかけ ここでは、自分の大学生活がどんなだったかを書いてるだけなので、興味のない人は飛ばしましょう。(笑) 僕が学部二回生頃に、当時数理科には機械学習の研究をされている先生が一人だけ所属されていました。その先生に、直接弟子入りさせていただき、僕の機械学習への道は始まりました。。。(メインは遺伝統計学の研究でした。) 弟子入りした直後は、タイピングもなめくじのように遅かったですし、gitもpullする前にpushしたこともありました。。。 しかし、その先生は、目的に最先端で届く道のりを用意してくださいました。 プログラミングを初めて一か月ほどで、t-SNEの実装をしたり(遺伝統計学の研究で必要だった)、四か月ほどで、カーネルc-SVMの実装をしたり(やってみなとゆわれて(笑))することができました。その後も、学部二回生、三回生ながら、論文を読んで実装してきました。 学部二回生冬には、遺伝統計学の研究を 株式会社パーソルキャリア さん主催のハッチングフェスというデータサイエンティストのためのイベントで、発表しました。 このイベントでは、企業の方もたくさん来られて、知り合えるチャンスがかなりあります!! (名刺を作っておくと、「えっ、学生なのに名刺持ってるの?!」ってなるので、覚えてもらえます。...

secure_file_priv

Introduction sorry, this page is Japanese only.   最近SQLを勉強し始めたので自分のメモ代わりに得た知識を書こうと思います。 OSはwindowsでMYSQL server 5.7を使っています。 LOAD DATA INFILE CSVファイルをLOAD DATA INFILEで取り込おうとしたらエラーが出ました。エラーメッセージではsecure_file_privがどうのこうの...... ではまずsecure_file_privとはなんなのか確認していきます。 secure_file_priv secure_file_privはデフォルトで設定される項目の一つです。 secure_file_privがデフォルトで設定されているときは、その設定されているディレクトリにあるファイルしか読み取れません。 secure_file_privの値の確認は mysql> SELECT @@global.secure_file_priv で確認できます。 windowsの場合はProgramData/MySQL server 5.7/uploadsが指定されているようです。 CSVファイルのIMPORT では実際にuploadsの中にあるcsv fileをimportするcodeは以下です。取り込みたいファイルをselect@@global.secure_file_privで得られたディレクトリに置いておくのを忘れないでください。 C:/ProgramData/MySQL/MySQL server 5.7/Uploads/に入っているfile.csvをdbというデータベースのtabというtableにimportします。 DATA LOAD INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/ file.csv' INTO TABLE db.table selec @@global.secure_file_privで指定されているディレクトリ以外からファイルを取り込む方法は以下に記しておきます。 secure_file_privの変更 secure_file_privを変更したい、...

Pythonでグラフ理論

Introduction English ver 今日はnetworkxというpythonのモジュールについて書きます。 グラフ理論の定義などの情報は ここ の記事に書いてあります。 この記事ではグラフ理論の中身については扱いませんが、Pythonでのnetworkxというモジュールについてメモをしておきます。 Networkx Python3にはnetworkxはすでに入っています。 Python2の方はpipを使ってinstallしてください。コマンドラインで以下のコマンドを実行します。 pip install networkx ではNetworkxを使ってグラフを作っていきます。 初めにimportをしてインスタンスを作っていきます。 import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() 次にグラフにノード(頂点)とエッジ(枝)を入れていきます。 G.add_node(1) # add Multiple nodes G.add_nodes_from([2,3,4]) G.add_edge(1,2) # add Multiple edges G.add_edges_from([(3,4),(1,2),(4,6)]) ではこのGのグラフを描画していきましょう。 以下のコードで描画できます。 nx.draw(G) plt.show() Networkxはたくさんの関数を持っています。 また、随時追記していきたいと思います。 Reference https://qiita.com/kzm4269/items/081ff2fdb8a6b0a6112f http://akiniwa.hatenablog.jp/entry/2013/05/12/012459