uma3blog

気が向いたことを稀になんかいろいろ書きます。

E資格に向けての勉強(CNN)

Convolutional Neural Network
日本語では畳み込みニューラルネットワーク
主に画像分類、特に一般物体認識に使用される。
従来の全結合層や活性化関数に、畳み込み層とプーリング層を加えたもの。

  • ハイパーパラメータ

チャネル数
白黒画像なら1、カラー画像なら3(R, G, B)。
input_shape=(縦ピクセル数, 横ピクセル数, チャネル数)

カーネルサイズ
縦横のピクセル数を指定する。
通常は正方形が利用される。
kernel_size=(x, y)

ストライド
入力とカーネルの積をとって特徴を探す際のカーネルを移動させるピクセル数。
strides=(x, y)

パディング
画像サイズ縮小を防ぐための補完。
sameかvalidが通常使用される。
padding='same' or padding='valid'

  • 畳み込み層の役割

特徴をより際立たせて抽出する。
演算結果は特徴マップへ。
(3, 3)のkernel_sizeに(2, 2)のstridesを使うと、5*7の入力層(実際はゼロパディングで7*9)は3*4に次元削減される。

  • プーリング層の役割

特徴を押さえたまま画像を縮小する。
平均値プーリング層と最大値プーリング層があるが、基本的に後者を用いる。

  • 流れ

畳み込み→プーリング→畳み込み→プーリング→畳み込み→プーリング→平滑化(Flatten)→全結合(Dense)→活性化関数(Activation)と言った感じの流れになる。
Kerasのコードは下記のような感じ。

# Sequentialモデル
model = Sequential()
# 畳み込み層
# カーネルサイズが(3,3)の出力フィルタが32枚、、ストライドは(1,1)、sameパディング、活性化関数はrelu、入力画像が100×100でカラー
model.add(Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), padding='same', activation='relu', input_shape=(100, 100, 3)))
# プーリング層
# 入力画像の2×2領域で最大の数値を出力する最大値プーリング層
model.add(MaxPooling2D(pool_size=(2, 2)))

# 同様に2回
model.add(Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# 平滑化
model.add(Flatten())
# 全結合(出力256)
model.add(Dense(256, activation='relu'))
# 全結合層との繋がりを50%無効化
model.add(Dropout(0.5))
# 全結合(出力10)。10クラス分類の場合は10になる。
model.add(Dense(10, activation='softmax'))
  • 有名なCNN

LeNet-5
1998年に開発。
手書き文字認識でよく使われる。

AlexNet
ILSVRC2012で優勝。
過学習抑制のためにDroupoutとData augmentationを行っている。

GoogLeNet
ILSVRC2014で優勝。
インセプションモジュールを採用することで、層を深くしながらも少ない次元、計算量で学習可能に。

VGG16
ILSVRC2014で2位。
畳み込み層13層+全結合層3層なので16。

ResNet
ILSVRC2015で優勝。
152層という深さだが、Skip connectionを取り入れることにより、学習に成功。

YOLO
物体検知タスクで使用。YOLOv3が使われる。
高速だが、画像内のオブジェクト同士が重なっている場合、うまく検出できない場合がある。

最近だとEfficientNetあたりが有名。

情報セキュリティ10大脅威 2021

情報セキュリティ10大脅威 2021が発表されましたね。

www.ipa.go.jp


やはりというか、新型コロナ関連でランクアップや新たにランクインしているものが見受けられます。


個人3位に昨年7位の「ネット上の誹謗・中傷・デマ」がきました。

確かに、新型コロナという一般人への影響度が高いかつ不確実要素満載の物事が出てきたことにより、視野が狭く思考が浅薄かつ感情的な人が各種メディアの扇動により他者を攻撃しているというイメージがありますね。
三次情報を鵜呑みにしちゃダメということですね。特にこのような前例のないことに対しては。


組織3位に「テレワーク等のニューノーマルな働き方を狙った攻撃」が新たにランクインしています。

これまで出社前提で業務を行っていた多数の企業が突貫でテレワーク体制を整えた結果、セキュリティ面で穴だらけになってしまっているというのが多いと思います。

最近はゼロトラストの考えも取り入れられるようになってきたので、ただ話題だからといって認証・認可の環境が整わないままVPN介さずにインターネット接続できるようにした結果、マルウェア感染したとか。そんな組織あるのか知りませんが。


それ以外の顔ぶれは、組織ではランサムウェア標的型攻撃がそれぞれ1位と2位で例年通り上位に入っています。


ランサムは2020年だとEmotetが新しい攻撃手法としてパスワード付きZIPを用いるということで有名になりました。

www.ipa.go.jp


こいつはパスワード付きZIPで送られてくるので、メールフィルタとかには引っかからないということですね。
そこで、普段から他者に情報を送る際に、「資料をパスワード付きZIPにして送付し、パスワードは別メールで送ります」といういわゆるPPAPを使っている組織は流石に対応に追われることになったのか、exe形式やex_形式という謎拡張子で添付ファイルを送る、むしろPPAPより凶悪な某ソフト*1を販売していた某H社も2021年度からPPAPを廃止する方針であるとされ、話題になりました。

xtech.nikkei.com

また、2020年10月に米国土安全保障省のサイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)が「パスワード付きZIP(正確には、アンチウイルスソフトでスキャンできない添付ファイル)はブロックすべき」と言っているのも大きいんじゃないかなと思います*2。まぁそもそも某ソフトについてはPPAPが広まる5年以上前からセキュリティ界隈で批判されてたりしたんですけども。流石にexeファイルはヤバいでしょ*3


標的型攻撃については、標的型攻撃が行われる際にランサムも多く使われるので、ランサムが上位にいれば標的型攻撃も上位に来るだろうなと単純に思いました。


あと、組織の8位に「インターネット上のサービスへの不正ログイン」が昨年16位からランクアップしています。

これは、Microsoft 365などのクラウドサービスが、政府のクラウド・バイ・デフォルト原則のような考えやコスト削減策としてのオンプレ→クラウドへの移行推進、テレワークの推進などと相まって使われるようになってきたからかなと思います。私の元にもたまにMicrosoft 365に似せたフィッシングサイトのURLが貼り付けられたメールが送りつけられてきますので、こういうのに引っかかる人もいるんだろうなぁ。



この10大脅威をざっと眺めるだけでも、今はどんなセキュリティ脅威が流行っているのかを簡単に知ることが出来るので良いですね。そして、これらの脅威に自組織は対応する術はあるのか、無いならどうやって対応していくのかを考えるべきですね。

レガシーシステムや古い慣習を直していくのも大切ですが、ただトレンドの技術や考えを導入するだけじゃなく、自組織にとって何が最適なのかを見極めながら改善していくのが良いと思います。

*1:現在は販売終了しており、2022年6月にはサポート終了するようだ

*2:https://us-cert.cisa.gov/ncas/alerts/aa20-280a

*3:exeがフィルタでブロックされるようになると、某文でexe化したあとに”ex_”に拡張子を変更してメールに添付し、本文に「ex_をexeに直して実行し解凍してください」と記載された一見攻撃メールのようなものを送り付けたりしてたのは商魂たくましいというか何というか

E資格に向けての勉強2

early stopping
テスト精度が頭打ちになったら学習をやめる。

data augmentation
既存データにノイズを加えてサンプル数を水増しする。

Dropout
ネットワーク内の一部のノードを無効化する。

バッチ正規化
特定の中間層の出力に正規化を施す。
・学習時間短縮
・初期値の影響抑制

  • 活性化関数

線形入力に対して非線形変換を施す。

ロジスティックシグモイド
2値分類に使用。[0, 1]の範囲を取る。勾配消失問題が発生する。

ハイパボリックタンジェント
[-1, 1]の範囲を取る。

ソフトマックス
他クラス分類に使用。

ReLU
g(z) = max(0, z)
・短時間で最適化可能
・z>0の部分は常に微分値が1になるため、勾配消失しない
微分値が負になることがないので、活性化部分では常に微分値が大きくなる
・dying ReLUという問題が存在する→Leaky ReLUで解決

Leaky ReLU
g(z) = max(αz, z) ※αは一般に0.01が使用される

Absolute value rectification
g(z) = max(0, z) - min (0, z)
主に物体認識で使用。

マックスアウト
ReLUのさらなる一般化。

  • 最適化

モメンタム法

AdaGrad
単純な2次元問題では性能が高い。
DNNでは更新がすぐ止まりやすいので使わないほうが良い。

RMSProp
AdaGradの更新が止まる問題を改善した。

Adadelta

Adam
モメンタム+RMSProp。
ハイパーパラメータの調整がほとんど必要でない(だいたい学習率η=0.001)

Nadam
Adamより若干性能が高いが、RMSPropに負けることもある。

E資格に向けての勉強1

G検定に合格したので、そのままE資格を受けることにした。
E資格に関係のない基礎的な部分も含めて自分用に用語などをまとめる。
勉強してる感じだと、難易度はITSSレベル4くらい。G検定は2。
E資格は大学教養レベル程度の数学の基礎が身についてないと厳しい印象。



特徴量エンジニアリング
特徴量選択(feature selection)
既存の特徴量から役に立ちそうな特徴量を選択する。
特徴量抽出(feature extraction)
既存の特徴量を組み合わせて、新しい特徴量を作成する。
新データを集めて新特徴量を作成


過学習の防ぎ方

複雑になったモデルのパラメータのノルムにペナルティを課して汎化性能を向上させる。
主にL2正則化(Ridge)L1正則化(LASSO)ElasticNetがある。

L2正則化(Ridge)
L2ノルムにペナルティを課す。
L1正則化(LASSO)
L1ノルムにペナルティを課す。スパースなデータのときに使う。
ElasticNet
L2とL1の中間のノルムにペナルティを課す。

正則化の程度はハイパーパラメータで制御できる。
ハイパーパラメータのチューニング方法はグリッドサーチランダムサーチがある。
グリッドサーチ
すべての組み合わせを検討するやり方
ランダムサーチ
確率分布を仮定して、無駄な施行を避けるするやり方


性能指標

  • 回帰問題の代表的な性能指標

RMSE (Root Mean Squared Error)
最もよく使われる。
MAE (Mean Absolute Error)
外れ値が多い場合に使う。
RMSLE (Root Mean Squared Logarithmic Error)
値のレンジが大きい場合に使う。ある値が20、ある値が20000000など。
決定係数
みんな大好き。

  • 分類問題の代表的な性能指標

Accuracy, Error rate
Precision, Recall
F1-score, Fβ-score
MCC (Matthews Correlation Coefficient)
あまり使われないが、不均衡なデータに対してモデルの性能を適切に評価しやすい。
logloss
AUC(ROC曲線)

一口馬主2020/8末時点の状況

収支

3歳

トゥルーヴィル | 競走馬データ - netkeiba.com
出資額:231,192
分配金:24,629
シャルロワ | 競走馬データ - netkeiba.com
出資額:80,227
分配金:37,936

2歳

シュプールロイヤル | 競走馬データ - netkeiba.com
出資額:71,285
分配金:0
メイレンシュタイン | 競走馬データ - netkeiba.com
出資額:67,821
分配金:0
フェットデメール | 競走馬データ - netkeiba.com
出資額:81,660
分配金:0
ラヴドワンズ | 競走馬データ - netkeiba.com
出資額:58,617
分配金:0
エルカスティージョ | 競走馬データ - netkeiba.com
出資額:91,462
分配金:0
リリアンフェルス | 競走馬データ - netkeiba.com
出資額:54,164
分配金:14,534

合計収支

分配金:+77,099
出資額:-736,428
月会費:-84,300 (3240*15+3300*11)
入会金:-21,600
合計:-765,229(前月比+1,336)

一口馬主2020/7末時点の状況

収支

3歳

トゥルーヴィル | 競走馬データ - netkeiba.com
出資額:230,185
分配金:24,629
シャルロワ | 競走馬データ - netkeiba.com
出資額:78,513
分配金:36,957

2歳

シュプールロイヤル | 競走馬データ - netkeiba.com
出資額:70,266
分配金:0
メイレンシュタイン | 競走馬データ - netkeiba.com
出資額:66,309
分配金:0
フェットデメール | 競走馬データ - netkeiba.com
出資額:80,673
分配金:0
ラヴドワンズ | 競走馬データ - netkeiba.com
出資額:56,719
分配金:0
エルカスティージョ | 競走馬データ - netkeiba.com
出資額:89,790
分配金:0
リリアンフェルス | 競走馬データ - netkeiba.com
出資額:52,796
分配金:0

合計収支

分配金:+61,586
出資額:-725,251
月会費:-81,300 (3240*15+3300*10)
入会金:-21,600
合計:-766,565(前月比-12,093)

一口馬主2020/6末時点の状況

収支

3歳

トゥルーヴィル | 競走馬データ - netkeiba.com
出資額:228,744
分配金:24,629
シャルロワ | 競走馬データ - netkeiba.com
出資額:76,838
分配金:36,017

2歳

シュプールロイヤル | 競走馬データ - netkeiba.com
出資額:69,302
分配金:0
メイレンシュタイン | 競走馬データ - netkeiba.com
出資額:65,409
分配金:0
フェットデメール | 競走馬データ - netkeiba.com
出資額:79,034
分配金:0
ラヴドワンズ | 競走馬データ - netkeiba.com
出資額:55,488
分配金:0
エルカスティージョ | 競走馬データ - netkeiba.com
出資額:88,762
分配金:0
リリアンフェルス | 競走馬データ - netkeiba.com
出資額:50,921
分配金:0

合計収支

分配金:+60,646
出資額:-718,518
月会費:-78,300 (3240*15+3300*9)
入会金:-21,600
合計:-754,472(前月比-13,492)