ドラゴンズクラウンPROをプレイ中 その3

PS4でサイドビューの国産ゲームをプレイしています。


ストーリーも中盤になってきたらしく、タリスマンをいろんなダンジョンから複数集めるという話になってきました。

20191014-2.jpg

タリスマンを集めるため、高い塔に上ってみたり、

20191014-1.jpg

溶岩地帯を魔法のカーペットで移動してみたり、

20191014-4.jpg

巨大な石像と共闘してみたり、

20191014-3.jpg

野営してご飯を作りつつ、

20191014-5.jpg

人形遣いの秘密の部屋を見つけたり、

20191014-6.jpg

敵に捕らわれた美しい精霊を助けたりしています。

20191014-7.jpg


だんだんと敵も強くなり、パーティがぼろぼろにされてしまうことも出てきました。味方がやられたときにはお金を払ってすぐに復活させることもできますが、そうなると冒険で得られるお金がほとんどなくなってしまうため、状況をみつつ、素早い判断を下す必要も出てきました。

まあ、一度クリアしたところには何度も挑戦できるので、低い難易度のダンジョンでじっくりお金を集めていきたいと思っています。

という感じでプレイを続けていきます。


※余談
週末は台風接近のため、停電に備えていろいろと準備して真っ暗な中でもゲームできるようにとPSVITAも充電しておきました。
今回は難を逃れましたが、せっかく充電したので、久しぶりに艦これ改をプレイしました。運要素が強いので、そういうゲームに慣れるのは大変ですが、少しずつ艦娘が増えて強くなっていくのは嬉しいものです。











YouTubeで見つけた動画

昔ジュースのびんでアリを飼ってみたりしたなぁ


白猫は警戒心が強い傾向があるよね


Future Bassの曲







HI! VEVO Vol.172

Kiss - I Was Made For Lovin' You


いいメイクしてます。





クラシック曲を忘れない Vol.72

交響詩 魔法使いの弟子


ポール・デュカス作曲。アニメ「ファンタジア」に使われた曲。










ニコニコ動画のリンク


肉だけカレー




シムシティ実況




手洗い大事



くるみパンの形はなんであんななんだろうか

ディープラーニングG検定の勉強中 その27(指数関数)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。
本日から第5章、指数関数・対数関数の勉強を進めていくことにしました。

今回は、指数関数について見ていきます。


累乗の法則

変数m, n を自然数としたとき、以下が成り立ちます。

式1
5-1-1.png


累乗の拡張

指数が0のときやマイナスのときには以下が成り立ちます。

式2
5-1-2.png

式3
5-1-5.png

指数が分数のときには、以下が成り立ちます。

式4
5-1-6.png


有理数への拡張

x を有理数、p を自然数、q を整数としたとき、以下が成り立ちます。

式5
5-1-3.png


指数関数

全ての有理数 x に対しての a^x の値を決められることから、式6の関数を決めることができ、これを指数関数といいます。

式6
5-1-4.png

指数関数のグラフを描いたとき、
①のグラフは、x の増加に伴い f(x) も増加し、
②のグラフは、x の増加に伴い f(x) は減少します。


指数関数の性質

指数関数でも、累乗の法則と同様に下記の公式が f(x) = a^x に対して成り立ちます。

式7
5-1-7.png


今回のことはほとんど理解していたため、復習という感じでした。

ディープラーニングG検定の勉強中 その26(勾配降下法または最急降下法)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、勾配降下法(最急降下法)について見ていきます。

参考サイト
スマナビング!(最急降下法の仕組みをイラストでわかりやすく解説)

これまで、関数に対する微分を算出してきたのは、とある曲線に引かれる接線の傾きを知るためでした。
2次関数f(x) = x^2の場合だと、そのグラフは接線の傾きが小さい(水平に近い)ほど、極小値に近いことを意味していました。

上記の関数のように1変数関数の2次関数の場合は y = a(x - p)^2+q で極小値を求めることができましたが、
多変数関数の場合は、偏微分と学習率を用いた「勾配降下法」にて極小値を算出します。
ちなみに、ディープラーニングでは、極小値から離れている値は「誤差」を意味し、学習はできるだけ処理結果(出力層のデータ)と正解データとの誤差を小さくするために行います。

接線の傾きの性質として、接点が極小値に近い場合は、接線の傾きは小さく(つまり微分値が小さい)、
極小値から離れている場合は傾きが大きく微分値も大きいことが挙げられます。

そこで、接点を極小値に近づけるため、微分値の大きさに応じた一定の負の値を掛けることで適度な変化値を得ようとするのが勾配降下法の手法です。

2変数関数の勾配降下法の公式

式2
4-5-4.png

この式によって、学習率が0 < α < 1のときに、勾配降下法を k 回実施したときよりも、k + 1 回実施したほうが 微分値が小さくなり、結果として実施のたびに極小値に近づくことになります。

ただし、学習率が範囲内のときでも、関数によっては発散して正しい微分値とならない場合があるため、入力層のデータごとに適した学習率を設定する必要があります。


こちらのサイトで、Pythonによる勾配降下法を実装したソースが公開されておりますので、

参考サイト
Qiita(最急降下法の概要)

私もこのソースをお借りして、下記の2変数関数の極小値を求めてみました。

式3
4-5-5.png

式4 上記の各偏微分
4-5-6.png


学習率0.18の場合
更新後の変数 u v: [-0.7391305 -0.3043478]
更新後のf(u,v): -1.7
更新後の勾配: [-0.0000008 0.0000004]
4-5-1.png

学習率0.02の場合
更新後の変数 u v: [-0.7391302 -0.3043475]
更新後のf(u,v): -1.7
更新後の勾配: [0.0000005 0.0000008]
4-5-2.png


学習率が大きいと極小値までの実施回数が少なくて済みますが、極小値にたどり着く前に発散などのために有効な学習が終わってしまう場合があります。
一方、学習率が小さいほど、極小値により近い値まで近づくことが可能となりますが、学習回数は増えるため、入力データが多い場合は時間がかかってしまうことになります。


なお、勾配降下法では、仮の極小値(局所最適解や停留値)というトラップにかかって正しい極小値に到達できないことがあるため、確率的勾配降下法やミニバッチ学習法等、勾配降下法の欠点を補う手法が機械学習で使われるようです。


今回でテキストの第4章、多変数関数の微分が終わりました。大学で学ぶような内容もあって理解が大変でしたが、大意は理解できたと感じており嬉しいです。次回からは第5章、指数関数・対数関数の勉強をしていきます。

ディープラーニングG検定の勉強中 その25(全微分と合成関数)

ディープラーニングG検定まで1ヶ月を切りました。
いよいよ試験に向けてということで、問題集に取り組んでみて、とりあえずは1周しました。
公式テキストの読了から日が経っていたことから、正答率は6~7割程度でした。
このままだと合格は厳しいので、間違っていたところを復習して、10月中には正答率が9割以上になるように頑張ります。

それとJDLAの推薦図書も読んでいます。
手始めに「人工知能は人間を超えるか  ディープラーニングの先にあるもの」を読了しました。
ディープラーニングの歴史と概要と未来について分かりやすく書かれてました。これを要約したものが公式テキストという感じです。
あとは、AI白書(2019)も暇があるときに読んでいます。かなりボリュームのある本なので、こちらは読めるところまで読む、というところでしょうか。


という感じで、今回も
書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強してみました。

今回は、全微分と合成関数について見ていきます。

参考サイト
アタリマエ!(行列のかけ算のやり方まとめ。例題から分かる行列の積の考え方)


図1のようなパーセプトロンに、

図1
4-4-1.png

入出力層の他に中間層(隠れ層)がある場合は、関数を微分した結果を使ってさらに微分して出力することになります。これは合成関数の考え方と同じです。

合成関数の微分は、式1となりますが、

式1
4-4-2.png

この式と、多変数関数の全微分

式2 全微分の公式
4-4-3.png

を組み合わせて図1のパーセプトロンについて、ノード x1についての出力結果を出します。


図1の入力層のノードは、x1, x2, x3で、その仮出力先が u1とu2、最終的な出力層が L なので、これを式3で表します。

式3
4-4-4.png

入力層のノード x と重み w の内積は式4なので、

式4
4-4-6.png

これを計算することで、中間層全体の値が算出されます。

式5
4-4-7.png

式6
4-4-8.png

これを中間層のノードごとに書き換えると、式7になります。

式7 青い部分はx1 以外の変数なので偏微分のときに「定数」とみなします。
4-4-9.png


次に、各中間層のノードから、出力層の内積を算出する場合ですが、パーセプトロンでは入力層とその重みで算出した結果(今回はx1の偏微分)を使うので(つまりは合成関数)、式8の計算となります。

式8
4-4-10.png

これで計算が終わりましたので、各算出内容を全微分の合成関数の公式である式9に当てはめます。

式9
4-4-5.png

上記の各算出結果を微分して当てはめると、式10となるので、

式10
4-4-11.png

これを計算して式11となります。

式11 ノード x1 の 出力結果
4-4-12.png

なお、式9を多変数関数の一般式にすると式12となります。

式12
4-4-13.png


次に、中間層のノードが1つの場合について、見ていきます。

図2
4-4-14.png

中間層の変数が1つ(1次元)の場合はこれをスカラーと言います。
このスカラーでの合成関数は式13となります。

式13
4-4-15.png

これをノード x1 について算出する式は式14となります。

式14
4-4-16.png

具体的に計算してみると、式15、16となり、

式15
4-4-17.png

式16
4-4-18.png

この算出結果を式17のように当てはめると、

式17
4-4-19.png

式18の出力結果となります。

式18
4-4-20.png

式18を多変数関数に一般化したものが式19となります。

式19
4-4-21.png


今回は理解するのに時間がかかりました。でも、実際に計算してみると、なぜそうなるのかが分かったので良かったです。
ベクトル・行列の積についても再度確認できたのも良かったです。

忙しい人のための幻想郷シリーズを振り返る

東方Projectには膨大な2次創作があります。ジャンルも音楽、漫画やイラスト、ゲーム、コスプレ等いろんなものがありますが、ニコニコ動画で動画作品として2次創作を発表したものも多数あります。

今回リンクを張っていく「忙しい人のための幻想郷」動画シリーズは、本体は2次創作のゲームなのですが、半分はゲームの宣伝、もう半分はファンアートとして多くの東方ファンを楽しませてくれました。

特に過去作品の面白さは今見てもなかなかなものなので、以下張っていきます。



































という感じで、久しぶりに各話を閲覧して楽しい気分になりました。今年もこの動画のうぷ主さんはアップを続けてますので、他の動画も観てみるとよいかと思います☆