FC2ブログ

湘南工科大学非常勤講師 (15)

湘南工科大学の非常勤講師、後期の授業のひとつに、「確率・統計」があります。

この授業ですが、「アカデミックパス制度」を利用されている方が複数受講されています。私よりもおそらく、人生の先輩だと思われます。

なので、導入としては、できる限り日常お目にかかるような事例から入ろうとしています。たとえば、シラバスではまだ先に登場するであろう、「ベイズの定理」を先んじてやるなど、です。
スポンサーサイト

圏論 (2)

結局のところ、"Basic Category Theory"、1-clickしてしまいました。

H先生によると、日本語にしてしまうと、わかりづらい表現があるとのこと。これは原書を買ったほうがよいという意味と理解しました。H先生は否定していましたけど。でも、これがなくても、私は訳書は買わない。

圏論

「圏論」という数学の分野がいま注目されています。英語では"category theory"と呼ばれます。

先日(2018年10月8日)、某所にて、この分野の権威、H先生よりレクチャがありました。教科書は「ベーシック圏論」です。

私は参加したものの、よくわからないので、BGM(Back Ground Math)として聞いていました。ただ、参加者は精鋭なので、関わったほうがよいですね。もったいない。

問題は教科書です。訳書に頼りたくない私は、やはり原書?原書は"Basic Category Theory"です。アマゾンの書評を見ると、良書との評判です。

ゲーデルの不完全性定理 (3)

ゲーデルの不完全性定理、なんどかチャレンジしましたが、討ち死にしてきました。

そうしたところに、某H先生が、このテーマで6回の特別ゼミを開催されると聞いて、これを逃すともう一生解らないと思い、申し込みました。

一か月に一回のペースです。

湘南工科大学非常勤講師 (14)

湘南工科大学の非常勤講師、本日(2018年9月26日)は後期のガイダンスです。

科目は数学で、「線形代数w/プログラミング」と「確率統計」です。

前者は前期にやったので、それの焼き直し。問題点があったので、それを修正します。

後者は初めてなので、ガイダンスの様子を見て、具体的な進め方を決めようと思っています。内容自体はシラバスで定義されています。

Levenberg–Marquardt法 (3)

最近、ある最適化問題を解いていました。

最適値がわかっているテストデータで、計算してみると、解が逆方向に進みます。勾配ベクトルは正しいのですが、ヘッセ行列が逆を指している。あれ、おかしいな...

原因は解りました。最適値から離れているので、ヘッセ行列の当該成分の符合が逆になっていたわけです。実際、最適値の近傍だとうまく計算されることがわかりました。

この問題を解決するのが、要するに、Levenberg–Marquardt法です。ヘッセ行列を無効化するように正則パラメタを決めて、実質、勾配ベクトルだけを手掛かりにする。起源は古いですが、いまも使われるわけです。優れた手法です。

任意の三角形から1/7の面積を持つ三角形の作図

Facebookにて、「任意の三角形から1/7の面積を持つ三角形の作図」、について知りました。数学者A先生のポストです。A先生もご存じなかったということです。

まず、1/7という数値に引かれました。この比率はかなり珍しいのではないでしょうか。

作図の方法自体は簡単です。まず、3つの辺をそれぞれ三等分します。そして、各辺の左端から1/3のところの点と、向かいの頂点間に線を引きます。これを3つの辺に対して行うと、真ん中に三角形ができます。その三角形の面積はというと、元の三角形の面積の1/7になる、ということです。

これを証明するには、補助線を引かなければなりません。この引きかたが難しいです。私は補助線が苦手なので、平面図形は苦手なのですが、得意なかた、ぜひチャレンジください。

なお、FBでA先生が呟かれたのは、「任意の三角形を、同じ面積を持つ7つの三角形に分割する方法」、ですが、上記ができれば、あとは簡単です(平面図形の苦手な私でも簡単)。

楕円関数

先日、ある数学の集まりで、5次方程式の解の公式を見出した、とM氏。

ご存知のとおり、ガロア理論により、5次以上の方程式には、解の公式は存在しません。ところが、M氏によると、それはある前提があっての話で、楕円関数を使ってもよければ、解の公式が作れる、とのことです。

なるほど、よくわかりませんが、私よりも断然、数学に詳しいM氏が言うのだから、そうなのでしょう。それは信じることにして、「じゃあ、楕円関数ってなんですか?」と訊いてみると、「知りません!」。これは受けました。

ところで、この画期的?な発表は、札幌で行わるようです。残念ながら当日は所用があり、この面白そうな発表を聴くことは、私には叶いそうもありません。

湘南工科大学非常勤講師 (13)

前期が終わり、今週(2018年8月6~10日)は、夏季集中講義というのをやってます。内容は微積です。

人数は4名と少ないです。前期は約50名を相手にしていたので、ほぼ個人授業です。私にとっては、こちらのほうがやりやすい。

湘南工科大学非常勤講師 (12)

湘南工科大学の非常勤講師、本日(2018年8月3日)で前期の全16回が終了です。

数学とプログラミングの合体授業で、しかも今期から始まったので、思考錯誤しながらやってきました。毎回課題を提出したもらいましたが、それを見るのが楽しみでした。いろいろと反省点もあるので、次回の機会に修正していきます。

来週(2018年8月6~10日)は、夏季集中講義(基礎解析2)を行います。

合成関数の微分

いまさらですが、合成関数の微分についてです。

z1 = z1(y1, y2) --- (1)
z2 = z1(y1, y2) --- (2)

として、さらに、

y1 = y1(x1, x2) --- (3)
y2 = y1(x1, x2) --- (4)

であるとき、

∂z1/∂x1 = (∂z1/∂y1)(∂y1/∂x1) + (∂z1/∂y2)(∂y2/∂x1) --- (5)
∂z1/∂x2 = (∂z1/∂y1)(∂y1/∂x2) + (∂z1/∂y2)(∂y2/∂x2) --- (6)
∂z2/∂x1 = (∂z2/∂y1)(∂y1/∂x1) + (∂z2/∂y2)(∂y2/∂x1) --- (7)
∂z2/∂x2 = (∂z2/∂y1)(∂y1/∂x2) + (∂z2/∂y2)(∂y2/∂x2) --- (8)

となります。これは通常の微積本に書かれてあります。

これをニューラルネットで図示すると、入力がx1とx2、出力がz1とz2、隠れ層がy1とy2、と考えられます。各層間は全結合。

このように、合成関数の微分をニューラルネットと対応付けると、可視化されて、理解が進むのではないかと思います。

ニュートン法 (4)

ニュートン法で、5次方程式の解を求められるかどうか、実験してみました。

ご存知の通り、解の公式は4次方程式までしか存在しないので(ガロア理論)、数値的に解くしかありません。あらかじめ因数分解した方程式を展開し、ニュートン法でやってみました。すると、必ずしも初期値に近い解に収束するのではないことに気がつきました。これはややこしい。

そこで最適化の専門書を見てみたところ、ひとつ解を求めたら、それを因数として、次数を減らしていくとありました。そして、これを繰り返す。

ニュートン法、単純ながら、なかなか奥が深い解法です。

ニュートン法 (3)

ニュートン法は、以下のように繰り返して、f(x) = 0の解を求めるものですが、

x1 = x0 - f(x0) / f'(x0) --- (1)

f'(x) = 0の解、つまり極値を求めるにはどうすればよいでしょう。式(2)の右辺第2項の微分を増やせばよいのですが、少しまともに導きます。まず、f(x)を2次までテイラー展開します。

f(x) ≒ f(x0) + f'(x0)(x - x0) + (1/2)f''(x0)(x - x0)2 --- (2)

式(2)をイコールとおいてしまい、xで微分します。

f'(x) = f'(x0) + f''(x0)(x - x0) --- (3)

式(3)を変形すると、

x = x0 - f'(x0) / f''(x0) --- (4)

となり、繰り返しの式が得られました。

湘南工科大学非常勤講師 (11)

湘南工科大学の非常勤講師、11回が終わり、残すところ5回となりました。

最後の課題は、微積のほうはニュートン法、線形代数のほうは最小二乗法をやります。

ニュートン法は、微積における数値計算の真打でしょう。私もいろいろと仕事で苦しみました。価値のある技術。

最小二乗法が線形代数?、と思うかたもいらっしゃるでしょう。確かに、通常は二乗誤差をとり、パラメタで偏微分して、正規方程式を導きます。ただ、いまの定式化のはやりは、ベクトルと行列で一気に解くやりかた。機械学習系の書物ではおなじみですが、線形代数の枠組みで教えられることは、ほとんどありません。これをやります。これから重要となる技術です。

私の数学は、実学がベースです。

余弦定理

三角形の計算では、直角三角形を使うことが多いので、余弦定理には疎かったです。三角関数は苦手なので、避けていました。

直角三角形であれば、

c2 = a2 + b2 --- (1)

という簡単な式が成り立ちます。これはaとbの成す角θ=90の場合です。そうでないときは、

c2 = a2 + b2 - 2ab cosθ --- (2)

ですね。これが余弦定理です。きらいですが、証明したくなった。

aとbをそれぞれcに射影します。すると、

c = a sinα + b sinβ --- (3)
θ = α + β --- (4)

が成り立ちます。式(3)を二乗してやると、

c2 = a2 sin2α + b2 sin2β + 2ab sinαsinβ
= a2(1 - cos2α) + b2(1 - cos2β) + 2ab(cosαcosβ - cosθ)
= a2 + b2 - 2ab cosθ - (a2cos2α + b2cos2β - 2ab cosαcosβ)
= a2 + b2 - 2ab cosθ - (a cosα - b cosβ)2 --- (5)

となりますが、式(5)の最後の項はゼロなので、式(2)が証明できました。

ベクトル値関数の最適化 (6)

入力もベクトル、出力もベクトルの関数、

f(x) --- (1)

において、近似することをせず、エラーEを、以下で定義します。

E = fT(x)f(x) --- (2)

式(2)を、xで微分してみましょう。

∂E/∂x = 2JTf --- (3)

式(3)をさらに微分します。

2E/∂x2 = 2(∂JT/∂x)f + 2JTJ --- (4)

式(4)の右辺第1項はややこしいのですが、これはf = 0の付近では、ゼロに近くなりますから、第1項を無視してしまいます。すると、式(4)は、

2E/∂x2 = 2JTJ --- (5)

となります。これが、ガウス-ニュートン近似と言われるもので、LM法で使われるものです。

ベクトル値関数の最適化 (5)

今回は、前回紹介した式、

(JTJ + λI) h = -JTf --- (1)

を実際にどう解くか、という話です。

これは連立一次方程式なので、逆行列を求めれば解けますが(正則化項があるので、逆行列は必ずある)、実際には逆行列を求めることはしません。なぜかというと、時間がかかるからです。一般に、変数が多いときは、逆行列をまともにもとめることは推奨されません。

では、どうするか。よくやられるやり方は、Cholesky分解と、共役勾配法ですね。これは専門的になりますので、適当な書籍をご覧ください。最適化を扱っているものであれば、大抵は載っているはずです。

ベクトル値関数の最適化 (4)

前々回で紹介した、一次方程式系、

JTJh + JTf = 0 --- (1)

ですが、ここから、Levenberg–Marquardt法(LM法)に移行することができます。式(1)を移項して、さらに正則化項を加えてやると、

(JTJ + λI) h = -JTf --- (2)

という式が得られます。λは調整パラメタで、これが大きくなると、hは小さくなり、逆もなりたちます。まさに、機械学習における正則化です。

ベクトル値関数の最適化 (3)

前回の続きます。

あ、ここで終わっていてはいけませんでした。これは一次近似解なので、これを繰り返すわけですね。いわゆるニュートン法です。

つまり、hが求まりますから、

xx + h --- (1)

としてやって、同じ計算をして、収束したら(または決められた回数をおこなって)、終了します。

ベクトル値関数の最適化 (2)

ベクトル値を出力に持つ多変数関数の最適化について、以前まとめました。

http://kanouy.blog9.fc2.com/blog-entry-1913.html

ちょっと舌足らずなところがあったので、少し書き換えます。入力もベクトル、出力もベクトルの関数、

f(x) --- (1)

において、このベクトルの長さを最小化することが目的です。このままではどうしようもないので、式(1)をテイラー展開します。一次の項までとると、

f(x + h) = f(x) + Jh --- (2)

Jはヤコビアン(行列)で、以下です。

J = ∂f/∂x --- (3)

エラーE(これはスカラ)を、以下で定義します。これを最小化したいわけです。

E = f(x + h)Tf(x + h) --- (4)

式(4)に式(2)を代入すると、

E = (f(x) + Jh)T(f(x) + Jh) = hTJTJh + 2hTJTf(x) + f(x)Tf(x) --- (5)

式(5)をhで微分して、それをゼロとおきます。

JTJh + JTf(x) = 0 --- (6)

式(6)はhに関する一次方程式系なので、線型代数の方法により、解くことができます。あまり変わらなかった。

湘南工科大学非常勤講師 (10)

湘南工科大学の非常勤講師、線形代数のほうは如何に?

こちらは、ベクトルと行列です。応用上大切な内積をまずやって、そのあと、行列を使って、ベクトルを変換するやりかたを教えます。

計算はプログラミング(Java)でやるのですが、ここでの課題は、次元が低いので(2次元または3次元)、手計算でもできてしまうこと。これだとプログラミングの重要性が伝わりにくいです。実際のところ、手計算でやったような解答を出してくる学生さんもいます。

これは私の出す課題にも問題があるので、ちょっと思案のしどころ。すでに手は打ってありますが。

湘南工科大学非常勤講師 (9)

湘南工科大学の非常勤講師、ガイダンスを含め、5回が終わりました。だんだんペースが掴めてきた。

まず、微積のほうです。プログラミング(Java)にかけるので、結局のところ、級数をやっています。級数計算は、微分が絡みますし(テイラー展開)、実用的、計算もプログラミングでないとできないので(たくさんの項を足し合わせるので)、結構フィットしている気がします。

Chain rule

微分でおなじみの、chain ruleですが、chainという単語に、これまで引っかかっていました。

それが、"Deep Learning (2016)"を読んでいて、この呼び名の意味するところが、なんとなくわかりました。

同書の第6章で、各変数がノードで表されたグラフの微分を扱っているのですが(back propagationで必要)、まさにchain ruleです。ノードをたどるたびに、各ノードの微分を掛けていけばよいし、別の経路があれば、経路ごとに足し合わせればよいわけです。まさにchainです。なるほど。

余因子行列 (3)

逆行列は、掃きだし法で計算するのが基本です。

ただ、例外的に、逆行列=(数式)、として書き下したいことがあります。そのときは、以下の公式があります。

A-1 = adj(A) / det(A) --- (1)

adj(A)は、行列Aの「余因子行列」です。余因子行列は定義の難しいものです。先日、3x3行列の逆行列を計算するプログラムを、式(1)で作ったのですが、コーディングの間違いで、デバッグに時間がかかりました。

湘南工科大学非常勤講師 (8)

湘南工科大学の非常勤講師、今年は本日(2018年4月13日)が最初です。まずはガイダンス。

科目は数学で、線形代数と微積をやるのですが、それにプログラミングをかけるという、多少とも贅沢なカリキュラムです。プログラミング言語はJavaです。

いちおう主担当のN教授と進めかたは協議しましたが、今年からのカリキュラムなので、試行錯誤をしながら進めていくことになるでしょう。試行錯誤は不得手ではありませんし、悪いことでもありません。もしや、教育のアジャイル?学生さんの反応を見ながらやっていくことになるでしょう。

ベクトルでの微分 (3)

機械学習、特にニューラルネットをやっていると、ベクトルでの微分が出てきます。

でも、通常の微積教科書では、こういうのは載っていません。通常は、たとえば、

z = z(x, y) --- (1)
x = x(u, v) --- (2)
y = y(u, v) --- (3)

などとしたときに、

∂z/∂u = ∂z/∂x・∂x/∂u + ∂z/∂y・∂y/∂u --- (4)
∂z/∂v = ∂z/∂x・∂x/∂v + ∂z/∂y・∂y/∂v --- (5)

などと書かれてあります。でも、これだと変数が増えたときに対応できません。そこで、

x = x(x, y) --- (6)
u = u(u, v) --- (7)

と変数をベクトルとしてパッケージ化してやります。そうすると、式(4)(5)は、

dz/du = dz/dx・dx/du --- (8)

と簡潔に書くことができます。変数がいくつ増えても式(8)は変わりません。こういう記法をどんどん増やしたほうがいいと思います。

湘南工科大学非常勤講師 (7)

湘南工科大学の非常勤講師、来年度(2018年4月~)も継続することになったので、先日(3月26日)、研修会に出向きました。

大学の現状などをお聴きしました。大学もいろいろとたいへんですね。いちおう方針はわかったので、その線に沿って協力できればよいな、と思いました。

そのあとは懇親会です。すでに何人の先生がたとは面識ができました。

シラバスは作りましたが、ルーブリックを授業開始前に作らなければなりません...

対称正定値行列

対称正定値行列、日本語での呼び名は多々あれど、英語では、symmetric positive-definite、です。

この行列は、いろいろとよい性質があるのですが(たとえば、LU分解が必ずできる)、では具体的にはどのような行列?

私が知っているのは、共分散行列です。共分散行列Vは、

V = (1/n)ΣppT --- (1)

と書けます。でもΣはややこしいので、design matrixを使います。すなわち、

V = (1/n)ΦTΦ --- (2)

つまり、Φpを行ベクトルとして「パッケージ化」したものです。転置が逆になることに注意。

さて、Vは式(2)から対称行列です。なぜならば、

(ΦTΦ)T = ΦTΦ --- (3)

では、式(2)が正定値であることを確かめましょう。

(x, Vx) = (x, (1/n)ΦTΦx) = (1/n)(Φx, Φx) = (1/n)|Φx|2 --- (4)

式(4)は正ですから、Vは正定値であることが確認できました。

テイラー展開の謎 (3)

テイラー展開、必要があって、復習していました。

応用上は実関数しか必要ないのですが、きちんと理解しようとすると、やはり複素関数にいかなければなりません。つまりは正則関数の理論。ここは実は、あまり得意ではない、というか苦手なところです。

というわけで、志賀浩二先生「複素数30講(1989)」を再読することにしました。四半世紀前に購入したものです。

abc予想

「abc予想」を、日本人数学者(M先生)が証明した、というニュースが駆け巡っています。

これは2012年に発表されたものですが、まったく新しい数学を構築し、それを適用することで、abc予想を証明した、と主張するものです。なので、これが正しいかを検証するには、まず、まったく新しい数学(= Inter-universal Teichmüller Theory: ITU)を習得しなければならないわけです。

暫し前、ある英語ジャーナルに、この検証がなぜ困難を極めているのか、書かれてありました。つまり、もしもこの証明が間違っていたとすれば、せっかく新しい数学を習得したとしても、それは浮かばれないかもしれず、大量の時間を費やすので自身のキャリアを棒に振るリスクがある、ということです。その通りだと思います。

なので、M先生はもちろん素晴らしいに決まっていますが、それを検証しようとした方々も、同等に素晴らしいと思います。
プロフィール

加納裕(かのうゆたか)

Author:加納裕(かのうゆたか)


[略歴]
1983年3月東京工業大学工学部機械物理工学科卒業
1983年4月(株)図研入社
1987年1月同社退社
1987年2月(株)ソリッドレイ研究所を6名で設立、取締役
1994年3月同社退社
1994年4月(株)スリーディー入社
1996年10月同社取締役
1999年12月上海大学兼務教授
2002年10月同社代表取締役
2009年9月ものつくり大学非常勤講師~現在
2009年10月同社代表退任/退社
2010年1月ソフトキューブ(株)入社~現在(横浜オフィス)
2017年4月湘南工科大学非常勤講師~現在


[業界団体・学会活動]
電気学会・第三期次世代インタラクティブディスプレイ協同研究委員会(幹事)/最先端表現技術利用推進協会・アカデミック部会(旧:三次元映像のフォーラム)(副部会長)/日本バーチャルリアリティ学会ハプティクス研究委員会(委員)/ACM・SIGGRAPH(Professional Member)/情報処理学会(正会員、CVIM会員)/3Dコンソーシアム(賛助会員)/3DBiz研究会(個人賛助会員)/URCF(特別会員)

----------------

前職:立体映像産業推進協議会(幹事)/日本バーチャルリアリティ学会・論文委員会(委員)


[資格]
TOEIC805点
数学検定1級(数理技能)
中型・普自二免許
サッカー4級審判員

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード