関数の誕生(ジャンプ命令)

関数の誕生

  • 関数を利用=「関数にジャンプ」してから「呼び出し先の最後で呼び出し元に戻る」
  • 呼び出し元に戻るのもジャンプ命令。つまりどちらもジャンプ命令
  • 前者はジャンプ先は固定なので実装はシンプルだが、後者は実行毎に異なるので実装に工夫が必要。

呼び出し元への戻り方

  • ①. 「関数を呼び出す度に、呼び出し先の関数処理の最後でジャンプ命令のジャンプ先の書き換え」で実装
  • でもこれだと書き換えるジャンプ命令の場所の管理が大変
  • ②. 特定のレジスタをジャンプの戻り専用に利用することにした
  • でもこれだと同一関数の再帰呼び出しができないため
  • ③. スタックで管理することにした。正確には特定のレジスタが常にスタックの先頭のアドレスを管理している

命令アーキテクチャとマイクロアーキテクチャ

命令アーキテクチャは外側から見たインタフェースの話で、マイクロアーキテクチャは内側の話。

命令アーキテクチャ

  • プロセッサがどのような命令を実行するのか,そして実行した結果がどのようになるのかなどの「プロセッサの働き」を詳細に規定したものを「命令アーキテクチャ」と呼びます。
  • 命令アーキテクチャにはプロセッサはどのような命令を実行でき,その結果どうなるのかは書かれていますが,プロセッサの中身がどのように作られているかについては規定されていません。

マイクロアーキテクチャ

  • 命令アーキテクチャに対して「具体的な中身のハードウェア構造」を「マイクロアーキテクチャ」と呼びます。
  • プログラムの動作という点では,命令アーキテクチャが同じであれば同じソフトウェアを動かすことができますが,その性能はマイクロアーキテクチャで変わってくるのです。
  • 具体的にはCPU、DSPなどのハードウェアの動作を完全に記述できるような電子回路の設計や実装を指す。

gihyo.jp

1月20日の学び(機械学習の用語整理)

転職の面接で聞かれるかもしれないので....。

qiita.com

正則化

正則化(せいそくか、英: regularization)とは、数学・統計学において、特に機械学習と逆問題でよく使われるが、機械学習過学習を防いだり、逆問題での不良設定問題を解くために、追加の項を導入する手法

深層学習

(狭義には4層以上の)多層のニューラルネットワークによる機械学習手法

整理する用語

「勾配降下法」「正則化」「誤差逆転伝播法」「自己符号化器」

1月14日の学び

Kaggle実行環境の整理

  • PC以降に伴い基本的に全てDockerに統一とする。
  • ローカル環境のData以下のファイルをDockerにマウントする
  • Dockerめっちゃ便利。技術の進化の恩恵を受けている気がする!!!
docker run -d -p 8888:8888 -v /Users/mofuneko/SoftwareDevelopment/Docker/Jupyter/Data:/home/jovyan/work  --name jupyter jupyter/datascience-notebook start-notebook.sh --NotebookApp.password='sha1:498022a0e569:8d7b52f956aee890c7ecbca9427c975de02c3370'

1月9日の学び

とりあえず機械学習を進めるなら以下3つを進めていく方針で。

機械学習の手法

分類

  • ラベルを学習してラベルを予測するのが目的
  • タイタニック号で「生存」「死亡」の2つなど

回帰

  • 数値を予測するのが目的

クラスタリング

  • データ群をいくつかのまとまりに分けてデータの構造を発見するのが目的

次元削除

  • 複数次元のデータから重要な要因を発見するのが目的

1月4日の学び

最近はGithubに直接Haskell関連は記載するようになった。

結合法則

  • 集合Sに二項演算○が定義されているとき、(a ○ b) ○ c = a ○ (b ○ c ) がSの任意の元a, b, cに対して成り立てばこの演算は結合的(結合法則を満たす)であるという。
  • 加算や乗算は結合的。

左結合・右結合

  • 演算子にはまず優先度があり優先度が高い演算から実施される
  • 優先度が等しい演算子が複数ある場合は、右結合・左結合に従って演算が実施される

左結合の例

同じ優先度の演算子に対して左から計算する演算子を左結合と呼ぶ

  • 減算
  • 加算
1 - 2 - 3 = (1 - 2) - 3
1 + 2 + 3 = (1 + 2) + 3

右結合の例

同じ優先度の演算子に対して右から計算する演算子を右結合と呼ぶ

a = b = c ⇒ a = (b = c)