ディープラーニングについてディープにラーニング。

思いっきり、自分が学んだことのアウトプットしていきますが、何分初心者。もし何かアドバイス等頂けましたら幸いです!

会計とは…

会計について学んでみることにした。
全くのド素人だがどこまで行けるのか…

会計と簿記について


f:id:kawam0t0:20200403142500p:plain


まずはこの画像内で行くと
会計とは、会社の活動を関係者すべてに報告する事を指し、
その中に簿記も含まれている、という。
まぁ、めちゃくちゃ枠が広めってことなんだろう。


んで、簿記はその会計の中でも、
会計データに取引を記入する事、を言うらしい。

会計とファイナンスについて

会計とファイナンスを比べてみて、会計とは何かを理解する。

会計にはこんな特徴がある。

①まずは会社の立場で報告する

②「利益」を扱う

③常に、ある一定期間の「過去」の数字を扱う

らしい…確かに…

また、会計も2種類あるんだってさ。

管理会計…会社内の人の為に数字を報告する 例えば設備投資するべきなのかな??のジャッジに

財務会計…会社外の人の為に数字を報告する 例えば株主さんへの報告とか

一方ファイナンスは…

①投資家の立場で

②「キャッシュ(=今、手元にあるお金)」を取り扱う

③常に未来の事を話す

どこに投資すべきか、やどうやってその投資金を集めるのか?とか、
儲けの配当なんかを扱うときにはファイナンス、っていうんだって。


そして、
企業の活動は3つに分けられる。

①お金を集める財務活動

②投資する投資活動

③投資した者からもうけを上げる営業活動

これらの3つの活動を記録したものが、財務諸表っていうらしい!!

今日はここまででした。
ではまた!

Django環境開発手順

Django 環境構築手順

大前提ーーーーーーーーーーーーーーーーーー
pythonがインストール済みである
Djangoもインストール済みである
・vertiualenvもインストール済みである

ーーーーーーーーーーーーーーーーーーーーー


① まずは環境を作りたいところにcd

② 任意でフォルダ名を作成(今回はprojectsとして作成)

③ cd projects

④ virtualenv -p python microblog(ここは任意)

⑤ cd microblog

⑥ cd Scripts

⑦ activate.bat →バーチャルエンブか起動

⑧ cd ..

⑨ django-admin startproject microblog(任意)
  \pwd → \micrblog

⑩ cd microblog

⑪ python manage.py startapp blog(任意)

⑫ settings.pyでinstalled_apps に"blog"(任意)を追加

Adminサイトへのアクセス

① admin.pyを開く

② from アプリ名.models import models内で表記したクラス名

③ admin.site.register(クラス名)

④ http://127.0.0.1:8000/adminで確認

⑤ 記事を入れるにはpython manage.py createsuperuser

⑥ 各種設定して終了

1-2 Pytorchのディープラーニング実装の流れ

f:id:kawam0t0:20200109115307p:plain

数学も学んだ。
ディープラーニングの知識についても少しはついた。
いよいよ、
パイトーチによる、ディープラーニングからSSDの学習を始めていく。

まずはアウトプット。

パイトーチの学習の流れ

前処理、後処理、モデルの入出力確認

Datasetの作成

DataLoaderの作成

ネットワークモデルの作成

順伝播の定義

損失関数の定義

最適化関数の定義

学習・検証の実施

テストデータで推論



それぞれ説明するけど、前処理、後処理、入出力はいいだろう。

Datasetについて

イメージはしづらいが、入力するデータとラベルがペア(辞書形式?)になったもの。
学習用、検証用、テスト用とそれぞれのデータを持ってる。
ただ、まさかのそれぞれ1組ずつで返すモジュールらしいっす。

DataLoaderについて

さっき話したDatasetからデータを取り出しやすくする役割のやつ。
ていってもわかりにくい
つまりは1組で返してくるデータをバッチサイズごとに束にして、くれる機能のやつ。
更にそのミニバッチ内でシャッフルしてくれたり、Tensor型にしてくれる。

ネットワークモデルの作成

これはいいよね。
独自モデル?学習済みモデル?学習済みモデルの変更モデル?

順伝播の定義

単純なモデルの場合は前から後ろのレイヤーへって感じだが、
ディープラーニングの場合はそうはいかない。
複雑な順伝播もあるので、しっかりと定義を行う

損失関数の定義(逆伝播)

今までは単純に前から後ろへと伝播させていく流れだったが、
この損失関数の定義によって、
教師データと出力データの誤差(=どれだけ変わったのか?どれだけ勾配があったのか?)を算出する


最適化関数の定義

損失関数で算出された値をもとに各パラメータの値を徐々に小さくしていく関数を定義する
それを学習の目的はそもそも、この損失関数の値を小さくしていくことにあるからだ。


それで、学習をさせていき、
推論、学習、テストを行って、精度を確認する。
過学習が起こっている場合は、精度が一定で止まってしまう。それを止めるのをアーリーストッピングっていうらしい。

条件付き確率

名前の通りだが、条件付き確率について記載する。

久しぶりに、数学で理解できたかも笑

条件付き確率

そのままだが、ある出来事Bが起こる条件の下で別出来事Aが起きる確率のこと。
表し方としては
f:id:kawam0t0:20200103133946p:plain
と表現する。


また、
この条件付き確率を求める式は
f:id:kawam0t0:20200103134101p:plain


このように求められる。
この∩は「キャップ」と呼ばれるものだ。


かなりわかりづらいので、例を出す。


袋の中に黒い球と白い球が5個ずつ入っている。
黒い球には1という数字が3個、0と表記された球が2個入ってて、
白い球には1という数字が2個、0と表記された球が3個入ってる。

ここで球を一つとったら白い球だった。
この白い球が0と表記されている確率はいくらか?

念のため、答えは5分の2になる。


では、また。

相関係数について

今日は相関係数について。

相関係数

相関係数とは共分散と標準偏差を使って-1から1までの間で関係性を示す計算方法。

相関係数 = xyの共分散 / xの標準偏差 × yの標準偏差

で表される。

では復習も兼ねて、共分散と標準偏差の求め方も記載する。

x = [ 50 , 70 , 60 ]
y = [ 20 , 30 , 90 ]

という値を使う。


共分散は、

①まずx、yの平均値を求める。 → x:60 y:46(小数点は切り捨て)

②x、yのそれぞれの値を平均値から引く。 → x:[ -10 , 10 , 0]  y:[ -26 , 16 , 44]

③対応するそれぞれの要素を掛け算して、足算 → x*y = [ 260 + 160 + 0 ] → 420

④この420の平均を出す → 140 これが共分散になる。

標準偏差

①まずx平均値を求める。 → x:60 

②xのそれぞれの値を平均値から引く。 → x:[ -10 , 10 , 0]

③それぞれの値を2乗して足算する → x:[ 100 + 100 + 0] : 解は200

④そして、この解のへいきんを算出 → 66.6666666666

⑤そして標準偏差はルートで計算されているので、実数に戻してあげる → x 8.1

⑥yにも同じように求める。 yの標準偏差は [676 + 256 + 1936 ] → 30.9




これで上記の
相関係数 = xyの共分散 / xの標準偏差 × yの標準偏差

の式の数字が出た。

相関係数 = 140 / 8.1 * 30.9  →  0.5593… になる。

このように相関係数

  • 1 ~ 1 の間で推移して、今回だと正の数に倒れたので、

xが大きくなったらyも大きくなる、っていう指標になる。
0は全く関係ない。
マイナスはxが大きくなったらyは小さくなり、その逆も然り、って話だ。


では、また。 

共分散について

最近はめっぽう数学にはまっている。
もう少ししたら、パイトーチのSSDに進むが、
なにぶん、ここまで数学を全くやってこなかったので、
年末年始の休みでいっきに数学の基礎を知ろうとしている段階だ。

あぁ、早くコード書きたい笑

共分散

聞きなれない言葉だが、
共分散とは、2組のデータの関係性を表現する数値のこと。

あまり初めはぴんと来なかったが、例を出すと理解が深まった。

では、どうやって求めるのか?

初めにテキストで書いておく、

①まずは、それぞれ数値のへいきんをとる。
②それぞれの数値を平均点と引き算し、それぞれ対応する数値をかける
③かけたものを全て足算して、最後にまた平均値をとる
この結果が
正:Xは大きい場合、Yも大きく、XがちいさければYも小さい
0ないし0に近い:XとYはあまり関係がない
負:Xが大きかったらYが小さく、Xが小さかったら、Yが大きい傾向にある

では、例を出す。
国語の点数(X)と数学の点数(Y)がそれぞれ下記の通りだったとしよう。

X=50、70、40、60、80
Y=60、80、50、50、70

f:id:kawam0t0:20200101191520p:plain


そうすると結果が正の数値であったため、Xが大きければ、Yも大きく、
Xが小さければ、Yも小さくなる、という傾向にあることが分かった。

import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([50, 70, 40, 60, 80])  # 数学の点数
y = np.array([60, 80, 50, 50, 70])  # 英語の点数
z = np.array([60, 40, 60, 40, 30])  # 国語の点数

cov_xy = np.average((x-np.average(x))*(y-np.average(y)))
print("cov_xy", cov_xy)

cov_xz = np.average((x-np.average(x))*(z-np.average(z)))
print("cov_xz", cov_xz)

plt.scatter(x, y, marker="*", label="xy")
plt.scatter(x, z, marker="+", label="xz")
plt.legend()
plt.show()

f:id:kawam0t0:20200101191656p:plain

正規分布(ガウス分布)

今日もアウトプット。


今回は、正規分布というグラフの説明。


こちらをまずはチェック。

f:id:kawam0t0:20200101182056p:plain

これが正規分布といって、平均(μ)を真ん中にとって、σの幅を標準偏差(前にやった分散)を表している。

自然界では、正規分布になるといわれているぐらい有名なグラフらしい。。。


で、Numpyには、この正規分布に即した数字の乱数を発生させる関数があるらしい。
それが、
np.random.normal()関数である。名前にNormalついてるので、イメージはつきやすいか…

import numpy as np
import matplotlib.pyplot as plt
 
# 平均0、標準偏差1、1000個
x = np.random.normal(0,1,1000000)

# ヒストグラム
#棒の数
plt.hist(x, bins=1000)
plt.show()

コード内で言う平均0は平均が真ん中にくるように、って意味で、
標準偏差はそれぞれのばらつきが1になるようにって意味らしい。

f:id:kawam0t0:20200101182512p:plain


これが出力結果。


ではまた。