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

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

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


直角三角形の特徴

直線 x の2倍の長さの直線 r

図1
3-4-1-1.png

で直角三角形を作ると、その内角が、90°、60°、30°の直角三角形になります。

図2
3-4-1-2.png

このとき、y の長さが不明ですが、三平方の定理で計算すると、

式1
3-4-1-3.png

y の長さが導き出されます。
なお、直角以外の角の角度が同じ場合は相似が成立するため、x と r が接する角度が60°の場合には、いつも式3の比率が成り立つわけです。

式3
3-4-1-4.png

そして、このように直角三角形の3辺の比率をsin(正弦)、cos(余弦)、tan(正接)で表したものが「三角比」です。


三角比

式4 三角比
3-4-1-5.png

つまり、θが60°のときには、sin、cos、tanの比率は式5となります。

式5
3-4-1-6.png

ところで、なぜsinを正弦、cosを余弦、tanを正接と呼ぶのかについては、下記のサイトに説明があります。

CinderellaJapan(「正弦」の意味)


三角関数

三角比では、内角についてのみの比率が算出されるだけですが、
単位円を用いると、三角比が外角にも拡張されます。
単位円は、半径 r が「1」の円です。

図3 単位円と直角三角形
3-4-1-7.png

円に接する直角三角形の角の座標は(cosθ, sinθ)となるのですが、
外角となる座標に設定することができ、

図4
3-4-1-8.png

r が 1 で、x が -1/2 とするなら、θは120°となり、つまりは、式6となります。

式6 θ = 120°
3-4-1-9.png

このように、三角比の考え方を拡張したものを「三角関数」といいます。


三角関数のグラフ

Pythonを使って単位円での三角関数のグラフを描画してみます。

ソースの引用サイト
Qiita([python]グラフ描画のためのライブラリMatplotlibの使い方)

--------------------
import numpy as np
import matplotlib.pyplot as plt

# 描画範囲の指定
x = np.arange(0, 4.1, 0.1)

# 計算式
y1 = np.sin(x)  # xの単位はラジアン
y2 = np.cos(x)

# グラフ描画設定
plt.plot(x, y1, label="sin")
plt.plot(x, y2, label="cos")

plt.xlabel("x")
plt.xlabel("y")
plt.title('sin & cos')

# グラフのグリッドを表示
plt.grid()

# ラベルの描画
plt.legend()
# グラフの描画実行
plt.show()

--------------------
出力結果
3-4-1-10.png

ラジアンと度数の関係については把握しきれていないので、ラジアンを度数に変換するソース等は、このことがきちんと把握できたら後日作るかもしれません。

ディープラーニングG検定の勉強中 その16(ベクトル間の距離)

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

今回は、ベクトル間の距離について見ていきます。


2つのベクトルを式1のように(x軸に進んだ量, y軸に進んだ量)として成分表示したとき、

式1
3-3-3-1.png

の距離dは、式2が成り立ちます。

式2
3-3-3-2.png


それでは実際の値を代入して、距離dを算出してみます。

図1
3-3-3-3.png

図1のの距離d(青い点線の始点と終点の距離)は、図1の目盛りを「1」としたときに、式3となります。

式3
3-3-3-4.png

図1を見ると分かりますが、三平方の定理で斜辺を求めたのと同じ結果になっています。


図2
3-3-3-5.png

図2のの距離dは、式4となります。

式4
3-3-3-6.png


図3
3-3-3-7.png

図3のの距離dは、式5となります。

式5
3-3-3-8.png

図2と図3は一見直角三角形になっていないように見えますが、距離dの青い点線を斜辺と見ると、直角三角形ができているのが分かると思います。その「隠れた」直角三角形から、三平方の定理によって斜辺(距離d)を求めることができます。


ちなみに、式2が成り立つということは、多次元でも成り立つことになります。それを総和∑で表したのが式6となります。

式6
3-3-3-9.png


式5をPythonで確認してみます。

参考サイト
Qiita([Python]Numpyの参照、抽出、結合)

--------------------
import numpy as np
import math

a = np.array([1, 3])
b = np.array([4, 1])

d = math.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2)

print("d = " + str(d))

--------------------
出力結果
d = 3.605551275463989

google検索に√13と入力した計算結果です。

式7
3-3-3-10.png

同じ結果となりました。



進捗状況

最短コースでわかるディープラーニングの数学
89/328(27.1%)

ディープラーニングG検定の試験日まであと45日

ディープラーニングG検定の勉強中 その15(ベクトルの長さ(絶対値))

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

今回は、ベクトルの長さについて見ていきます。

ベクトルの長さは、正とした向きのベクトルをそのまま正反対にしても同じであるため、ベクトルaについて、
式1のように絶対値で表します。

式1
3-3-1-1.png

このとき、図1のように各ベクトルが直角三角形になっている場合には、三平方の定理がそのまま当てはまります。

図1
3-3-1-2.png

斜辺の長さの2乗は、他の2つの辺の長さのそれぞれ2乗と等しいので、式3が成立します。

式3
3-3-1-3.png

つまり、斜辺の長さは式4となるわけです。

式4
3-3-1-4.png


このことは、3次元でも成り立ちます。
図2のとき、

図2
3-3-1-5.png

△OABと、△OBCは、それぞれが直角三角形になっているので、その2つの三角形のそれぞれで三平方の定理が成り立ちます。

式5
3-3-1-6.png

式6
3-3-1-7.png

この式5と式6から、式7も成り立つことになります。

式7
3-3-1-8.png

図2により、式8となるため、

式8
3-3-1-10.png

3次元においても、式9のように三平方の定理が成り立つことになります。同様にして式10のように多次元でも三平方の定理が成り立ちます。

式9
3-3-1-11.png

式10
3-3-1-14.png

この式10を総和∑で書くと式11になります。

式11
3-3-1-15.png


実際に数値を入れて計算してみます。

図2の目盛りを「1」とすると、式12がOCの長さということになります。

式12
3-3-1-12.png


これをPythonでも確認してみます。
参考サイト
UNPySide(【Python】三平方の定理)

--------------------
import math

OA = 3
AB = 4
BC = 2
OB = math.sqrt(OA**2 + AB**2)
OC = math.sqrt(OA**2 + AB**2 + BC**2)

print("OC = " + str(OC))

--------------------
出力結果
OC = 5.385164807134504

式10の√29と一致するかどうか、googleの検索窓に入れて検索してみると、自動的に計算されて、式13となり、Pythonの出力結果と同じとなりました(小数点以下の桁数は違いますが、小数第11位までは一致しています)。

式13
3-3-1-13.png


出力結果をルート記号のままで出力できそうですが、いろいろなサイトを見ても、概数で表示していることがほとんどのようです。
そういうものなんでしょうか。

ディープラーニングG検定の勉強中 その14(ベクトルの和と差)

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

今回からは、テキストの第3章のベクトル・行列に取り掛かります。
今回は、ベクトルの和と差について見ていきます。

参考サイト
ベクトルのいろいろ(2.ベクトルの演算について その1(和と差、実数倍))

ベクトルとは、「向きと大きさを持つ量」のことです。

ベクトルの表記は、このブログではという表記に統一します。

ベクトルの特徴

の移動距離と向きがまったく同じ場合は、2つのベクトルは等しい

図1
3-1-1.png

図1でみると、a’、あるいは、b’は等しいです。


ベクトルの成分表示

x軸の向きとy軸の向きとそれぞれの大きさを(a, b)のように表します。
図1でのは、(0, 3)、とは、と(3, 1)と表します。


ベクトルの和

ベクトルの和、は、図1で見ると、

図1
3-1-1.png

・点Aから点Bに進み、その点Bから点Cに進む
・点Aから点Cに直接進む

のでは、その量は同じと考えます。
よって、式1が成り立ちます。

式1
3-1-3.png

計算は、各ベクトルのx軸ごと、y軸ごとに行いますが、それを式1に当てはめると、式2も成立します。

式2
3-1-2.png

なお、式2は多次元にも当てはまるため、それぞれのベクトルにz軸を追加しても和を計算することが可能です。

それでは、図1を使ってベクトルの和を計算します。グラフの目盛りは1単位ごととします。

式3
3-1-4.png

ちなみに、a’b’の和もの量と等しくなります。

式4
3-1-5.png


ベクトルの差

図1において、からを引いたものは、と等しくなります。

式5
3-1-6.png

これを計算すると、式6となります。

式6
3-1-7.png

このときのは、元々のの値と同じです。


ベクトルのスカラー倍

と向きが同じで、のk倍のをスカラー倍と呼び、式7のように表記する。

式7
3-1-8.png

成分表示では、式8となる。

式8
3-1-9.png


それでは、今回の計算をPythonでも実施してみます。

参考サイト
Math Python(NumPyでベクトルの足し算と引き算を行う)

--------------------
import numpy as np

a = np.array([0, 3])  # ベクトルaの成分表示
b = np.array([3, 1])
c = a + b   # ベクトルの和
b = c - a   # ベクトルの差
k = 3    # 倍数
d = a * k   # ベクトルaのスカラー倍

print("c = a+b = " + str(c))
print("b = c-a = " + str(b))
print("d = a*k = " + str(d))

--------------------
出力結果
c = a+b = [3 4]
b = c-a = [3 1]
d = a*k = [0 9]


Pythonだと多次元のベクトルの計算がすごく簡単そうですね。



進捗状況

最短コースでわかるディープラーニングの数学
85/328(25.9%)

ディープラーニングG検定まであと47日

【悲報】アズールレーン クロスウェーブをもうクリアしたぁ

PS4で可愛い女の子が艦船の艤装を付けてバトルを繰り広げるゲーム「アズールレーン クロスウェーブ」をプレイしていたのですが、

あっさりクリアしてしまいました!w

スタッフロール
20190922-1.jpg

プレイ時間は、15時間あるかないかというところです。

ただし、これはストーリーモードの話で、このゲームには、

20190922-2.jpg

上の画像のように、エクストリームバトルや様々なKAN-SENのエピソード編があり、

エピソード(未着手)
20190922-3.jpg

それに加えて、KAN-SENとのケッコン? 的なやり込み要素もあるため、全体的には30~50時間かそれ以上は楽しめるようです。


それでは、ストーリーモードで遊んでみた感想を書いてみます。


1.キャラクター
このゲームのメインは何と言っても4ヶ国(日本、アメリカ、イギリス、ドイツ)の艦船を模した架空の国の様々なKAN-SENでしょう。
それぞれ特色のある女の子の姿をしていて、どのキャラクターもとても可愛らしかったです。

提督の好みを全て押さえた完璧なKAN-SEN
20190922-4.jpg

そのハムマンを見せろ(爆)
20190922-6.jpg

それになかなかKAN-SENのデザインもいいと思います。

20190922-5.jpg

全体的に、私を含めたプレイヤーのツボを完璧にリサーチしたような感じなので、「たまんねぇな!」とプレイしながら思ってました。


2.アクション
このゲームでは、秘書艦を自キャラとして、3Dバトルを楽しむことができます。
海外のFPS・TPSのようなガチ殺戮バトルではないので、ややゆるい感じではあるのですが、
第5章以降は、しっかりプレイしないとゲームオーバーになることも出てきます。

私の場合、第5章に入るまで、魚雷を撃たずにプレイしており、そのため第5章の敵に全く勝てなかったのですが、
魚雷を含めた全ての兵装をきちんと使い、敵の攻撃から素早く逃げることで、クリアできました。
まあ、逆に言えば、それさえきちんとできれば、エンディングは誰もが見れる難易度だと思います。


3.音楽
どの曲もよかったです。
本家のBGMと同じものもあるようで、今回のプレイでの私のお気に入り曲は、この曲でした。

【アズールレーンBGM】背水の戦い



4.プレイのリズム
序章~第1章のほとんどは会話シーンなので、アクションバトルを楽しみたい人にはかなりじらされる感じになると思います。
まあ、シナリオ自体はとても楽しい内容なので、可愛い女の子の振る舞いを楽しむことができればいいのではないかと思います。
第2、3章以降は各国KAN-SENとのバトルを楽しめるし、途中からは、エクストリームバトルも開幕するので、そちらでいくらでもバトルを楽しめますよ。


5.総評
まだストーリーモードしかクリアしてないので、あくまでその時点での評価ですが、
よくできた内容だとは思いました。が、もうちょっとストーリーモードが長くてもよいかなぁと思いました。

アプリ版をプレイしたことがないのでよく分からないのですが、もしかしたら、むしろこのゲームではエクストリームバトルがメインなのかもなぁというところです。
せっかく定価で購入したので、今後は他のゲームをしながら、時々、このゲームも続けようかと思います。
私は特にラフィちゃんが好きすぎるので、この子をケッコンまで成長させてみたいです。

というところで、星10個満点でこのゲームを評価するなら、

☆☆☆☆☆☆☆☆

というところでしょうか。メインストーリーに主眼を置くなら星6個くらいですが、エンドゲームの役割も果たすエピソード編やエクストリームバトルでのやり込み要素や、ラフィちゃんとオブザーバーの可愛さで星2個追加しました。


さて、今後は、未クリアのゲームが、

・DOOM
・ボーダーランズ2
・プリンセスクラウン
・ドラゴンズクラウンPRO
・ブラッドボーン
・その他

とたくさんあるし、
さらに、最近PS4で発売されたトラック運転ゲームかバス運転ゲームもプレイしてみたくはあるのですが、
んーーー、まずはDOOMを片付けるべく(ボリュームがやたらある)、プレイを再開してみますかね☆







最近聴いた曲

通常運転


サムネで選んだ


後半の盛り上がりがよい








HI! VEVO Vol.169

Billie Eilish - all the good girls go to hell


よろよろ歩く天使の行く末が気になるMV






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

カンタータ「お願いだ、もうやめてくれ」より、「ああ、いつも不幸な人」


ヴィヴァルディ作曲。この作曲家の作品には四季以外にもたくさん名曲がありますが、そのうちの1曲。









ニコニコ動画のリンク


サムネで選んだ




待ってたよ~




RTA(リアル登山アタック)



ファミレスで居酒屋メニューを注文して過ごすのが好き