JDLA E資格の参考文献
はじめに
JDLA Deep Learning for ENGINEERを受けるにあたって、参考になった文献をメモしておきます。
E資格とは
日本ディープラーニング協会が実施する資格試験です。
E資格は「ディープラーニングの理論を理解し、適切な手法を選択して実装する能力を持つ人材」と定義されるようです。
E資格エンジニアと呼ばれるので、エンジニア向けの資格になるかと思います。
(自分はエンジニアではないですが、ディープラーニング周辺分野を扱っていたので、興味があって受けました。)
JDLA認定プログラムを試験日の過去2年以内に修了していることが受験の条件となります。
本試験は会場で受験するCBT方式での受験となります。
以下が試験の範囲になります。(見づらい表ですみません)
こちらは本サイトのシラバスで確認できます。
※JDLA Deep Learning for ENGINEER 2019 #1時点での範囲です。
大項目 | 中項⽬ | 小項⽬ |
---|---|---|
線形代数 | 特異値分解 | |
確率・統計 | ⼀般的な確率分布 | ベルヌーイの分布 |
マルチヌーイの分布 | ||
ガウス分布 | ||
ベイズ則 | ||
情報理論 | 情報理論 | |
機械学習の基礎 | 学習アルゴリズム | タスクT |
性能指標P | ||
経験E | ||
能⼒、過剰適合、過少適合 | ||
ハイパーパラメータ | ||
検証集合 | 学習データ、検証データ、テストデータ | |
ホールドアウト法 | ||
k-分割交差検証法 | ||
最尤推定 | 条件付き対数尤度と平均⼆乗誤差 | |
最尤法の特性 | ||
教師あり学習アルゴリズム | ロジスティック回帰 | |
サポートベクトルマシン | ||
最近傍法、k近傍法 | ||
教師なし学習アルゴリズム | 主成分分析 | |
k平均クラスタリング | ||
確率的勾配降下法 | ||
深層学習の発展を促す課題 | 次元の呪い | |
局所⼀様と平滑化 | ||
実用的な方法論 | 性能指標 | |
データの追加収集の判断 | ||
ハイパーパラメータの選択 | ⼿動でのハイパーパラメータ調整 | |
グリッドサーチ | ||
ランダムサーチ | ||
モデルに基づくハイパーパラメータの最適化 | ||
順伝播型ネットワーク | 線形問題と⾮線形問題 | |
コスト関数 | 最尤推定による条件付き分布の学習 | |
条件付き統計量の学習 | ||
出力ユニット | ガウス出⼒分布のための線形ユニット | |
ベルヌーイ出⼒分布のためのシグモイドユニット | ||
マルチヌーイ出⼒分布のためのソフトマックスユニット | ||
隠れユニット | ReLUとその⼀般化 | |
ロジスティックシグモイドとハイパボリックタンジェント | ||
その他の隠れユニット(RBF、ソフトプラス、Hard) | ||
アーキテクチャの設計 | 万能近似定理と深さ | |
誤差逆伝播法およびその他の微分アルゴリズム | 計算グラフ | |
微積分の連鎖律 | ||
誤差逆伝播のための連鎖律の再帰的な適⽤ | ||
全結合MLPでの誤差逆伝播法 | ||
シンボル間の微分 | ||
⼀般的な誤差逆伝播法 | ||
深層モデルのための正則化 | パラメータノルムペナルティー | L2パラメータ正則化 |
L1正則化 | ||
条件付き最適化としてのノルムペナルティ | ||
正則化と制約不⾜問題 | ||
データ集合の拡張 | ||
ノイズに対する頑健性 | 出⼒⽬標へのノイズ注⼊ | |
半教師あり学習 | ||
マルチタスク学習 | ||
早期終了 | ||
パラメータ拘束とパラメータ共有 | ||
スパース表現 | ||
バギングやその他のアンサンブル⼿法 | ||
ドロップアウト | ||
深層モデルのための最適化 | 学習と純粋な最適化の差異 | 経験損失最⼩化 |
代理損失関数と早期終了 | ||
バッチアルゴリズムとミニバッチアルゴリズム | ||
ニューラルネットワーク最適化問題 | 悪条件 | |
局所値 | ||
プラトー、鞍点、その他平坦な領域 | ||
崖と勾配爆発 | ||
⻑期依存性 | ||
不正確な勾配 | ||
基本的なアルゴリズム | 確率的勾配降下法 | |
モメンタム | ||
ネステロフのモメンタム | ||
パラメータの初期化戦略 | ||
適応的な学習率を持つアルゴリズム | AdaGrad | |
RMSrop | ||
Adam | ||
二次手法の近似 | ニュートン法 | |
共役勾配 | ||
BFGS | ||
最適化戦略とメタアルゴリズム | バッチ正規化 | |
教師あり事前学習 | ||
畳み込みネットワーク | 畳み込み処理 | |
プーリング | ||
構造出⼒ | ||
データの種類 | ||
効率的な畳み込みアルゴリズム | ||
ランダムあるいは教師なし特徴量 | ||
画像認識の有名なモデル | VGG | |
AlexNet | ||
GoogLeNet | ||
Resnet | ||
特徴量の転移 | ||
画像の局在化、検知、セグメンテーション | ||
回帰結合型ニューラルネットワークと再帰的ネットワーク | 回帰結合型のニューラルネットワーク | 教師強制と出⼒回帰のあるネットワーク |
回帰結合型ネットワークにおける勾配計算(BPTT) | ||
有向グラフィカルモデルとしての回帰結合型のネットワーク | ||
RNNを使った⽂脈で条件付けされた系列モデリング | ||
双⽅向RNN | ||
Encoder-DecoderとSequence-to-Sequence | ||
深層回帰結合型のネットワーク | ||
再帰型ニューラルネットワーク | ||
⻑期依存性の課題 | ||
エコーステートネットワーク | ||
複数時間スケールのためのLeakyユニットとその他の⼿法 | 時間⽅向にスキップ接続を追加 | |
Leakyユニットと異なる時間スケールのスペクトル | ||
接続の削除 | ||
ゲート付きRNN | LSTM | |
GRU | ||
⻑期依存性の最適化 | 勾配のクリッピング | |
⾃然⾔語処理とRNN | ||
メモリネットワーク | Attention | |
生成モデル | 識別モデルと⽣成モデル | |
オートエンコーダ | VAE | |
GAN | DCGAN | |
強化学習 | ⽅策勾配法 | |
価値反復法 | DQN |
応用数学・機械学習・ディープラーニングの内容で、範囲は比較的広いです。
参考になった文献
①ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ディープラーニングの本格的な入門書です。外部のライブラリに頼らずにゼロからディープラーニングを作り、原理を学べます。E資格も外部のライブラリに依存しない出題がされるので、とても参考になりました。内容としては、Pythonの入門/パーセプトロン/ニューラルネットワーク/誤差逆伝播法/畳み込みネットワークなどの実装が書かれており、画像処理がメインの本になります。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
②ゼロから作るDeep Learning ❷ ―自然言語処理編
①の続編になります。こちらも外部のライブラリに頼らずにゼロからディープラーニングを作り、原理を学べます。内容は自然言語処理や時系列データ処理でword2vec/RNN/LSTM/GRU/seq2seq/Attentionなどの実装が書かれています。
ゼロから作るDeep Learning ? ―自然言語処理編
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/07/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
③深層学習
JDLAからの参考図書になります。分厚い本なので全てを網羅することは難しいとは思いますが、数式の表記がE資格で出題される形式と同じなので、出題されそうなテーマの数式は見ておくといいです。一見難しそうに見えますが、丁寧に分かりやすい表現で書かれていて、ある程度知識が付いた後に読むと理解でき、ディープラーニングに関する理解が深まりました。
- 作者: Ian Goodfellow,Yoshua Bengio,Aaron Courville,岩澤有祐,鈴木雅大,中山浩太郎,松尾豊,味曽野雅史,黒滝紘生,保住純,野中尚輝,河野慎,冨山翔司,角田貴大
- 出版社/メーカー: KADOKAWA
- 発売日: 2018/03/07
- メディア: 単行本
- この商品を含むブログ (1件) を見る
④徹底攻略 ディープラーニングG検定 ジェネラリスト問題集
G検定の問題集です。E資格の内容に直接は関わらないかもしれませんが、実装ベースの勉強が多くなるので、忘れがちな基本的なディープラーニング周辺知識の復習に活用できました。
- 作者: スキルアップAI株式会社明松真司,スキルアップAI株式会社田原眞一,杉山将
- 出版社/メーカー: インプレス
- 発売日: 2019/02/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
まとめ
参考文献を中心に学習し、無事にE資格に受かることができました。
最近できた資格のため、これから認知度は上がっていくと思いますし、一定の水準で実装能力があることを示せるので、個人的にはおすすめの資格です。学んだことを元に、外部ライブラリを使い、自分野での活用を模索したいと思います。
juliaで単回帰を実装してみた
はじめに
juliaで単回帰をフルスクラッチで実装してみました。
juliaの理解促進のために勢いで書いたので、間違いがあると思います笑
間違いや改善点があったら教えていただけると嬉しすぎます。
実装
以下のようにmoduleで実装しました。
module SelfSingleLinerRegression using Printf using Distributions mutable struct SelfSingleLinerRegressionModel ETA::Float64 cnt::Int64 loss::Float64 #lossは0 theta_0::Float64 theta_1::Float64 X y end function fit(model::SelfSingleLinerRegressionModel) for i in 1:model.cnt model.theta_0 -= model.ETA*sum((model.theta_0 .+ model.X.*model.theta_1) - model.y) model.theta_1 -= model.ETA*sum(((model.theta_0 .+ model.X.*model.theta_1) - model.y).*model.X) if i % 200 == 0 model.loss = 0.5*sum((model.y .- (model.theta_0 .+ model.X.*model.theta_1)).^2) __print(i, model.theta_0, model.theta_1, model.loss) end end end function predict(model::SelfSingleLinerRegressionModel, X::Array) return model.theta_0 .+ X.*model.theta_1 end function __print(cnt, theta_0, theta_1, loss) @printf("cnt: %.0f, theta_0: %.2f, theta_1: %.2f, loss: %.2f\n", cnt, theta_0, theta_1, loss) end end
方程式で解いてもいいのですが、今回は勾配降下法を用いました。
最急降下法で実装しているので、繊細なハイパーパラメータの調整が必要となっています笑
実際のデータに当てはめてみます。
学習率:0.001/学習の繰り返し回数:10000にします。
X = [1.0, 2.0, 3.0, 4.0, 5.0] y = [20.2, 24.2, 32.4, 36.4, 40.1] reg = SelfSingleLinerRegression.SelfSingleLinerRegressionModel(0.001, 10000, 0, rand(), rand(), X, y) SelfSingleLinerRegression.fit(reg)
出力の最終行は以下になりました。
cnt: 10000, theta_0: 15.06, theta_1: 5.20, loss: 2.92
確認のためGLMライブラリの結果と照合してみます。
using DataFrames, GLM df = DataFrame(X=X, y=y) ols = lm(@formula(y ~ X), df)
以下が結果です。
StatsModels.DataFrameRegressionModel{LinearModel{LmResp{Array{Float64,1}},DensePredChol{Float64,LinearAlgebra.Cholesky{Float64,Array{Float64,2}}}},Array{Float64,2}} Formula: y ~ 1 + X Coefficients: Estimate Std.Error t value Pr(>|t|) (Intercept) 15.06 1.46233 10.2987 0.0020 X 5.2 0.440908 11.7938 0.0013
結果が一致しました!
まとめ
いくつかのデータセットで試してみましたが、収束しないことが多々あったので、データによっては全く使えないコードです汗
最急降下法じゃない実装も今後やっていきたいと思います。
juliaの書き方などの面でなにか参考になるものがあれば嬉しいです笑
はてなブログでTex記法を使うときのメモ
はじめに
はてなブログでMarkdown方式で数式を書くにあたり、まとめとしてメモしておきます。 単純な数式なら表現できますが、はてな記法でなくては表現できない数式もあるみたいです。
用法
基本ルール
基本的な数式
[tex:y = ax\^2 + bx + c]
分数
[tex:\displaystyle \frac{x\^3 + 1}{x + 1}]
[tex:\displaystyle \frac{分子}{分母}]
上付き文字
[tex:x\^{a}]
下付き文字
[tex:x\_{ij}]
根号
[tex:\sqrt\\[n\\]{x}]
対数
[tex:\log\_{n} x]
総和
[tex:\displaystyle \sum\_{i=1}\^{n} x\_i]
総乗
[tex:\displaystyle \prod\_{i=0}\^n x\_i]
微分
[tex:\displaystyley'=t\^2+3t+4\\\y''=2t+3\\\ \displaystyle \frac{dy}{dx}=x\^2+3x+4\\\ \displaystyle \frac{\partial f}{\partial x} =x\^2+xy]
積分
[tex:\displaystyle \int_{b}^{a}x\^2 dx]
まとめ
Markdownで数式を表現するには限界があるらしい。(行列表現する際の「&」表現などができない?)
&
がamp;
になってしまう事象の解決策はないのだろうか、、、
参考:
Peeple Analyticsに活かすHR(人事)データの溜め方
はじめに
Peeple Analyticsにおいてデータは命なので、HR(人事)データのカテゴリーと、データの溜め方に関して整理しました。
HRデータは担当者によって、資料に使う記述統計から機械学習モデルの構築まで幅広く用途があるので、個人的には各担当者の使いやすさのバランスを重視してデータを管理していく方がいいかなと思います。
HRデータのカテゴリー一覧
カテゴリー
|
データ例
|
採用データ
|
ES・資格・スキル・選考評価・職務経歴書
|
社員データ(固定)
|
性別・生年月日・学歴・適性検査
|
社員データ(変動)
|
年齢・婚姻歴・在籍期間・職種・職務内容・志向
|
勤怠データ
|
出退勤・遅刻・欠勤・有給休暇
|
組織データ
|
所属組織・組織人数・職種・上司・メンバー
|
育成/研修データ
|
研修種別・受講歴
|
行動データ
|
異動希望・面談歴・イベント参加歴・その他ログ
|
給与データ
|
給与・賞与・インセンティブ
|
評価データ
|
人事考課・査定・等級
|
退職データ
|
退職歴・退職理由・転職先
|
アルムナイデータ
|
(転職先での)評価/エンゲージメント
|
HRデータは定期的に変動するデータが多いので、履歴データとして溜めていく必要があります。データが不変か可変かどうかで保持するテーブルを変えていくといいです。
評価データや退職データはKPIになることが多く、統計的な分析や機械学習でモデリングする際に目的変数としてよく使われます。いずれも過去データを用いて示唆を示すので、過去の事象が現在でも言えるものなのか、BIツールなどを活用し、時系列での変動を確認することが大切です。
最近ではセンサーデータを活用する事例もあり、HRデータの幅は広がっています。難しいですが、アラムナイデータも取得できるようになると、採用において強力なタレントプールになります。
HRデータの溜め方
HRデータは各社で導入しているシステムやデータの保管状況により、扱えるデータは各社で割と色が出ると思います。
収集コストの高いデータもあるので、解決したい課題に合わせて、データを集めていくのが良いかなと思います。過去データの収集はテクノロジーでも解決できない部分が多いので、かなりの気合いが必要です笑 それと合わせて自然とデータが溜まっていく仕組みを作るのはHR担当者の腕の見せ所ではないでしょうか。
私の会社では分析基盤として、HRデータの分析専用のデータベースを構築しています。
RDBMSで一括管理しており、手早く分析できるように数値変換した状態でデータベースに保存するようにしています。(データ活用にそこまで強くない担当者でもすぐに活用できることを優先して、DB設計は第二正規化までにしています。)
Excelで管理する会社も多いですが、データが各所に散在してしまうので、絶対的なデータとして分析用のデータベースを構築するのはおすすめです。(SQLはある程度書けるようにならなくてはいけませんが。)
最近では割とデータ量が多くなってきたので(ビッグデータと呼べるほどでは全くないですが)、専任のデータエンジニアがいてくれると嬉しいと思っています笑
Profile (2018.12)
仕事
都内企業のHR部門で働いています。
HRのデータベース基盤の構築や、HR課題に対して統計学や機械学習を活用したソリューションの提供をしています。webアプリの開発もします。
キーワード
HR / HRテック / HRテクノロジー / People Analytics / Data Science / 機械学習 / 統計学 / JDLA E資格 / JDLA G検定 / 統計検定 / Python / R / SQL / julia / GAS / VBA / Django(webアプリ)
(少し) js / CSS / After Effects / Photoshop
その他
気付いたことなどお気軽にコメントいただけると嬉しいです!
またこのブログの投稿内容は私個人の見解であり、所属企業・部門見解を代表するものではありません!