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

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

会計とは…

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

会計と簿記について


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


これが出力結果。


ではまた。