ちびのはてな

「ちび(猫)」と「キノコ」から生まれた「ちびキノコ」。ドラゴンボール最強!純粋なサイヤ人のように生きたいと思っているモノ作りを楽しむ人です。IT技術で少しでも多くの人が笑顔になってくれたらいいなと。

エバーランドの構成要素メモ

f:id:chibi929:20201006233334p:plain
エバーランドの構成要素

PlantUML Raw Data

@startmindmap everland_mindmap
title エバーランドの構成要素

* Everland Online
** Nuxt.js
*** .prettierrc を変更して Linter FIX
*** Class API 導入
**** vue-property-decorator
**** vue-class-component
*** SCSS 導入 
**** sass-loader
**** node-sass
** Video.js を導入
** Firebase を導入
*** on, once, value, child_added
** Konva.js を導入
*** 32x32を200x200のマップを作るとメッチャ重い
**** 必要範囲のマップのみを作ることで解消
** SpriteSheet
*** オーディオも Sprite 化できることを知った
-- window.beforeunload
--- スマホはあまり飛んでこない
--- ブラウザKILLとかだと飛んでこない
-- MediaElement
--- click, touch event じゃないと反応しない
--- 先にロードすると良い
--- 複数ロードすると動かなくなる
-- ダブルタップなどの拡縮の全てを封じることができない

@endmindmap

【メモ】知的財産について

これは、G検定のための個人的なメモである.
内容はとても薄い.

データやモデルに対する特許権著作権・営業秘密(不正競争防止法)・一般不法行為についてまとめる. 公式テキストの表を写すだけ.


特許権 著作権 営業秘密
(不正競争防止法)
一般不法行為
データ × (情報の単なる掲示に該当するため, 発明成立性を満たさない) △ (著作物性が認められる場合は保護されるが, 生データそれ自体は通常創作性が認められない) ○ ( 秘密管理性 , 有用性 , 非公知性 の3要件を満たす場合) × (損害賠償請求は可能)
学習用データセット × (情報の単なる掲示に該当するため, 発明成立性を満たさない) ○ (情報の選択または体系的な構成によって創作性を有するものは データベースの著作物 として認められる) ○ (上記3要件を満たす場合) × (損害賠償請求は可能)
学習 ○ (特許法上の プログラム等 に該当する場合にコンピューターソフトウェア関連発明として保護される) ○ (プログラムそのものを保護, リバースエンジニアリングは NG) ○(上記3要件を満たす場合, リバースエンジニアリングは NG) × (損害賠償請求は可能)
学習済みモデル △ ( プログラムに準ずるもの に該当する場合は認められるが, 関数自体行列自体 には発明成立性が認められない) △ (学習済みモデルが データベースの著作物プログラム著作物 として認められるかは不透明) × (損害賠償請求は可能)
利用 ○ (アプリ等はコンピューターソフトウェア関連として認められる) ○ (著作権性が認められる場合) ○(上記3要件を満たす場合, リバースエンジニアリングは NG) × (損害賠償請求は可能)

まとめ

プログラムは財産

【メモ】欠損値について

これは、G検定のための個人的なメモである.
内容はとても薄い.

急に 回帰補完 , リストワイズ法 といったワードが登場し、
わからなかったのでまとめることにした

参考記事*1

参考記事を見れば全部書いてあるわけだが、自分の言葉でまとめるのも大事。
ってことで、全く同じになりかねないが、まとめていく


欠損値が発生する理由

  1. MCAR*2 : 完全にランダムな欠損
  2. MAR*3 : 測定されている値に依存して欠損している (欠損データとは無関係)
  3. MNAR*4 : 欠損データに依存して欠損している

欠損値への対処の手法

手法 説明 メモ
リストワイズ法 欠損値のあるサンプルを除外する
ペアワイズ法(オールペア法ともいう) 相関係数や分散を算出し, 2変数のどちらかに欠損値のあるサンプルを除外する
平均値代入法 欠損値の箇所に、欠損値を含まないデータから計算した平均値を補完する
回帰代入法(コールドデック法ともいう) 欠損値の箇所に、別途作ったモデルを利用して算出した値を補完する 目的変数に影響しそうな変数を説明変数として回帰分析を行うモデルを作る
確率的回帰代入法 回帰代入法により推定した値に誤差をランダムに加えて補完する
完全情報最尤推定法: FIML*5 欠損値パターンに応じた個別の尤度関数を仮定した最尤推定法により補完
多重代入法: MIM*6 欠損値を代入したデータセットを複数作成し、その結果を統合することで欠損値データの統計的推測により補完

まとめ

いつ登場するんだ?欠損値。回帰分析とかかな?
あと、 ステップワイズ法 という似た言葉が出てきたが、これは回帰モデルを作る手法であって欠損値対処の手法ではなさそう?

*1:https://jojoshin.hatenablog.com/entry/2017/02/03/220118

*2:MCAR: Missing Completely at random

*3:MAR: Missing at random

*4:MNAR: Missing not at random

*5:FIML: Full Information Maximum Likelihood method

*6:MIM: Multiple Imputation Method

【メモ】○○関数について

これは、G検定のための個人的なメモである.
内容はとても薄い.

損失関数、誤差関数、コスト関数、目的関数 の違いがわからない件

参考記事*1
参考記事*2


損失関数 == 誤差関数

参考記事によると、 損失関数誤差関数 はほぼ同義である。
もしくは 損失関数 ⊃ 誤差関数 っぽい。 ( 誤差関数損失関数 の部分集合)

損失関数(≒誤差関数) は、以前にも記事にしている。

chibi929.hatenablog.com

この自分の記事や前述の記事によると、

  • 平均二乗誤差関数: 回帰問題の誤差関数
  • 2値交差エントロピー誤差関数(2クラス交差エントロピー誤差関数): 2クラス分類問題の誤差関数
  • 多クラス交差エントロピー誤差関数: 多クラス分類問題の誤差関数
  • コネクショニスト時系列分類法: シーケンス学習問題の誤差関数
  • ヒンジ損失関数: SVM の誤差関数
  • Huber 関数: ?
  • 指数損失関数: ?

などが挙げられるそうだ。

コスト関数 = 損失関数 + 正則化

こちらも参考記事によると 損失関数モデルの複雑さのペナルティ(正則化) の合計とのこと.

目的関数

そして、一番大きな枠組みである 目的関数
損失関数(誤差関数) , コスト関数 これらを引っくるめて 目的関数 と呼ぶらしい.

まとめ

  • 損失関数 ≒ 誤差関数
  • コスト関数 = 損失関数 + 正則化
  • 目的関数 ⊃ 損失関数, 誤差関数, コスト関数

【メモ】ハイパーパラメータの探索について

これは、G検定のための個人的なメモである.
内容はとても薄い.

相変わらず「ベイズ」もよくわからないし...


グリッドサーチ

与えられたハイパーパラメータの候補の値の全パターンのモデル構築を行う手法.

  • 設定A: 1, 3, 5
  • 設定B: True, False
設定\設定B True False
1 1, True 1, False
3 3, True 3, False
5 5, True 5, False

グリッドサーチではこれらの値の全ての組み合わせを使ってモデル構築を行い結果を検証する.
上記の例だと, この6つの組み合わせでモデルを構築してみる.

これは設定値が2つしかない(2次元)だからいいけど...
これが, 3次元, 4次元, 5次元になっていったらパラメータ数やばい...

メリット/デメリット

  • メリット
    • 調整する値の「あたり」が付いている場合にとても良い
    • 調整する値の数が少ない場合にとても良い
  • デメリット
    • 計算コストが非常に高い

ランダムサーチ

候補の値をランダムに組み合わせたモデル訓練を行いハイパーパラメータを検証する手法.

グリッドサーチと同じ例を想定すると,
グリッドサーチでは全6パターンを全て試すものだったが,
ランダムサーチでは各パラメータをランダムで実施する.

今回の例では6パターンなので効果の実感は薄いが, これが組み合わせ爆発が起きているときは有用である.
しかし, ランダムで組み合わせを決めるので運要素が出てくる.

メリット/デメリット

  • メリット
    • 調整するパラメータが多い場合にも実行可能
  • デメリット
    • 運次第

ベイズ最適化

不確かさを利用して次に探索を行うべき値を探していく最適化アルゴリズムの一種. 目的関数(Acquisition Function) を推定する 代理モデル(Surrogate Model) には ガウス過程(Gaussian Process) が使われる.

「前回の結果を基に次に調べる値を決めていく」手法.

ベイズ最適化は以下の戦略を使って順次的に実行する.

  • 探索(Exploration)
    • もっと良い結果があると考えてあえて異なる部分を調べること
  • 活用(Exploitation)
    • 以前にやってみて良い結果が出たので継続してその近辺を調べてみること

【メモ】DistBelief

これは、G検定のための個人的なメモである。
内容はとても薄い。

DistBelief という用語が初めて登場したので調べたことをメモ。


高速化の手法

分散並列処理: DistBelief (2012, Google)

DistBelief 以前は、 MapReduce(2004, Google) が使われていて、深層学習には不向きだった。

DistBelief は、大規模ニューラルネットワークの研究。DistBelief を完了して TensorFlow となった。

ハードウェア

GPU が強くなった。
しかし「半導体の集積率は18か月で2倍になる」というムーアの法則にも限界が見えてきた

InfiniBand

強いネットワークケーブル?

バッチ正規化

勾配降下法のミニバッチ学習では、バッチごとにデータ分布の違いがある 内部共変量シフト(Internal Covariate Shift) が発生する。

内部共変量シフト

Deep Networkでは、深くなった隠れ層において各層と Activation ごとに入力分布が変わってしまうことが問題となる。この現象を 内部共変量シフトInternal Covariate Shift と呼ぶ。 白色化 の手法をとると、ニューラルネットワークの収束速度が速くなることが知られている。

まとめ

DistBelief を調べていたら、学習の高速化の話に繋がった。

【メモ】前処理

これは、G検定のための個人的なメモである。
内容はとても薄い。

正規化とか標準化とか平滑化とか、○○化がわからないからメモをする。 公式テキスト P.152 付近の話


前処理

手法 説明 メモ
正規化 各特徴量(入力データ)を 0〜1 の範囲に収まるように加工を施すこと -1〜1 に収まるようにする場合もある
標準化 各特徴量(入力データ)の平均を 0, 分散を 1 にするように加工を施すこと 各特徴量(入力データ)を標準正規分布に従うように加工を施すこと
無相関化 各特徴量(入力データ)間の相関を無くすこと 白色化の前処理
白色化 無相関化 + 標準化 標準化の強い版
正則化 不良設定問題を解いたり過学習を防いだりするために情報を追加する手法である パラメータのノルムの大きさに罰則をかけたりする
平滑化 データにおける重要パターンを、ノイズなど重要性の低いものを除去しながら見つけ出す方法 平滑化の目的は値の変化をなだらかにしてデータの傾向をわかりやすくすること

事前学習

いわゆる「事前学習済みのモデル」と「勾配消失問題に対する事前学習」の2種類の意味がある??

  • 事前学習済みモデル
    • ImageNet で学習させたモデルとか?
  • 勾配消失問題に対する事前学習
    • 重みの初期値を計算する処理
      • シグモイド関数においては Xavier の初期値が良いとされ、
      • ReLU 関数においては He の初期値が良いとされているあれ?

この2つは別物?一緒のもの??