第4章はこちら。第5章は線形独立について。
まずは線形従属とは何ぞやという話から始まって、線形独立なベクトルを開設している。その後Basis(基底)の説明があって、線形独立なベクトルは基底を張っているというような内容が書かれている。
例としてはキャッシュフローとローンの利率の計算をある期間のでどのように変化するかという例が挙げられている。
そのあとは、Orthonormalベクトルの解説があり、グラムシュミットのアルゴリズムでOrthonormalベクトルを求める方法が説明されている。
第4章はこちら。第5章は線形独立について。
まずは線形従属とは何ぞやという話から始まって、線形独立なベクトルを開設している。その後Basis(基底)の説明があって、線形独立なベクトルは基底を張っているというような内容が書かれている。
例としてはキャッシュフローとローンの利率の計算をある期間のでどのように変化するかという例が挙げられている。
そのあとは、Orthonormalベクトルの解説があり、グラムシュミットのアルゴリズムでOrthonormalベクトルを求める方法が説明されている。
前回はこちら。4章はクラスタリングの話。序盤でクラスタリングみたいな話が入ってくるのは珍しい。それだけ応用を意識している本ということだろうか。
クラスタリングがどういうものかの説明の後に様々な応用事例が述べられている。例えば郵便番号のクラスタリングや、アンケート結果のクラスタリングなど、非常に幅広い分野で応用が可能。
クラスタリングの目的関数とk-means法の紹介がある。この辺りは、よくある機械学習の教科書とかを見れば簡単に理解できる。
最後に実際の応用事例としてMNISTのクラスタリングやドキュメントトピックのクラスタリングが説明されている。MNISTの場合は単純にピクセル値を、ドキュメントトピッククラスタリングの場合は単語のカウントをベクトルとして入力としただけで、それなりにもっともらしい結果が出力できている。
第三章はノルムと距離について。2章の内容についてはこちら。
ノルムとはベクトルの大きさのようなものですよ、という解説から始まり、ノルムの性質・計算方法などが説明されている。距離についてはなじみのあるユークリッド距離から解説が始まって三角不等式が述べられている。
次の節では標準偏差の計算方法が解説されている。統計的な本で見る記述と比べるとベクトル表現なので、一見して理解しづらいがやっていることは統計学の標準偏差の計算と同様。
次にベクトル間の角度を計算する方法が説明されている。内積とノルムが分かると角度は計算できる。ついでに相関係数や計算量についての話も書かれている。
引き続きIntroduction to Applied Linear Algebra第2章を読んだ時のメモ。第1章はこちら。
第二章は線形関数について。線形関数はベクトル同士の掛け算で表せますよということから始まって、アフィン変換などで2次元ベクトルの場合グラフ上でどのように変換されるかが可視化されている。具体例としてcivil engineeringの分野で橋にかかる負荷の計算の例が挙げられていた。
その後は、テイラー展開と線形回帰モデルについての解説がある。テイラー展開では偏微分とか出てくるけども、二次元での例が図示されているので何となく理解できると思う。線形回帰の部分では住宅価格の予測についての例が示されている。
線形代数の復習をかねてIntroduction to Applied Linear Algebraという本を読んでいます。線形代数についての基礎(ベクトル・行列)から機械学習に関する応用など幅広く書かれていて、読み始めですがかなり分かりやすいです。
実世界での応用事例についてを紙幅を割いて各章で述べられているところも、初学者にとってはなんで線形代数を勉強するのかという疑問を解決するために良いと思っています。
まずは第一章。第1章はベクトルです。基本的にはベクトルとは何か、足し算、内積などの基礎的な内容から計算量までが語られています。
応用事例として例えばベクトルの内積により、2つのベクトルの共起回数を求められるといった内容や、多項式の計算ができるといったことなどが書かれています。
「Attacking Optical Character Recognition (OCR) Systems with Adversarial Watermarks」という論文を読んだ。
OCRシステムを騙すためのAdversarial Exampleを作成する手法の論文。OCRにかけるような文書は写真などとは異なり背景が白・文字が黒、となっているので写真データに対するAdversarial Exampleの手法を使うと、人間が見ておかしいことに気づく。
そこでこの論文ではWatermarkと呼ばれるスタンプを文書に付与することで、文書読み取りの結果を改変することを目指している。
Watermarkは例えば「Sample」や会社名みたいなスタンプを文書に重ね合わせる。そのWatermarkと重なる部分のピクセルを上手い具合に変えると、文書の意味を反転するような形でのAdversarial Exampleをいくつか作成できている。
基本的には評価はモデルがホワイトボックスだと仮定したうえで行っているが、ブラックボックスのOCRシステムとしてTesseract OCRに対してもWatermark を付与したAdversarial Exampleが働くことを確認している。ブラックボックスシステムに対しては、ホワイトボックスモデルに対してAdversarial Exampleを作成して、そのAdversarial Exampleを入力とすることで確認している。
具体的なアルゴリズムとしては、元文書とAdversarial Exampleのノルムを閾値以下である・Watermarkの中に含まれるピクセルをのみを変更する、という制約の下でCTC loss functionと呼ばれる最終層で出力される値から正解のデータ列になりうる確率を元に計算する損失関数を最小化するように最適化問題を解いていく。論文では、再急降下法+モーメンタムのようにして文書ベクトルを更新していくと述べられている。
具体的な実験では以下の図のように、いくつかの文の意味を変えるように改変することができたことを示している。免許証の番号を変える例も示されている。
この論文ではWatermarkの位置は固定なので、任意の箇所を改変できるようになっていないが、今後は自由な位置・形状でWatermarkを追加することも考えている。
WatermarkがつけられたらそもそもOCRは上手くいかなさそうなので、Watermarkがついた部分は人間がチェックするべきではないかと思った。手法としてWatermark付与以外にも文字のエッジの部分を改変することで、印刷がかすれているように見せかけて人間とOCRを騙す方法も述べられており、これが進んでいくと悪用される可能性もありそうに思った。
元論文:Squeeze-and-Excitation Networks
最近良くCNN関連のタスクでよく使われる手法なので、論文を読んでみたときのメモ。
ググると他にも詳しい解説記事があるので、あくまでも個人的なメモとして残します。
Squeeze-and-Excitationブロック(SEブロック)というモジュールを導入することで、明示的にチャンネル間の相互作用をモデル化できる手法。
チャネル間の相互作用はイメージがつきにくかったが、例えばある特徴マップとまた別の特徴マップが同時に強く反応する場合に、特定のクラスと判定されるといったケースだろうか。チャンネル方向でSEブロックの処理を行うことで、チャンネル間の相互作用を表せるということのようだ。
SEブロックい色々なCNNに組み込んだSENetは様々なデータセットに対して効果的であったことを確認した。既存のCNNに少しの計算コストを追加するだけで性能を高めることもできた。
CNNは画像認識の分野で広く使われている。CNNは畳み込みフィルタによって局所的な特徴をつかみ、層を重ねることで局所から大局までの広い範囲の画像特徴をつかむことができる。近年は高精度なネットワーク構造を作ることが研究のフロンティアであるが、いくつかの研究では既存のネットワークにモジュールを追加することで精度向上を目指す取り組みもある。
この論文で提案されたSEブロックはそのような取り組みの一つにあたる。SEブロックは特徴の再調整(論文ではfeature recalibrationと書かれている)を果たすように設計されている。
論文中Fig.1にあるように、SEブロックは特徴マップを受けとってチャンネルごとに空間情報を凝縮する(Squeeze)。そして、Excitationと呼ぶ操作によりチャンネルごとの重みづけを行ったベクトルとしてSqueeze後の情報を変換する。これによって生成されたベクトルを元の特徴マップにかけ合わせることで、特徴マップがチャンネル間の相互作用をモデル化することができる。つまり価値の高いチャンネルを強調することで表現の質を挙げることを目指している。
目的に応じてSEブロックをどこに配置するかを決めることもできる。例えば、ネットワークの初めの方の層にSEブロックを入れると、クラスに依存しない局所的な特徴を共有することができ、後ろの方の層に入れるとクラスに依存した特徴の相互作用を共有することができる。
モジュールを追加することでネットワークの性能を向上させる手法は色々と研究されている。多くの手法はチャンネル間の相互作用はクラスに無関係な関数の合成で表すことができると仮定しており、チャンネル間の相互作用を取り入れていない。一方、この論文では、チャンネル間の相互作用を非線形の変換を用いて調整することで、効果的に学習を進めることができるようになるというのが著者らの主張。
Squeeze: 各特徴マップはフィルタがかけられた局所的な部分の情報の集まりであり、大局的な情報を持っていない。そのためSqueeze処理でチャネルごとの統計情報を取得する。具体的にはGlobal Average Poolingをかける。もっと複雑な処理を使っても良いかもしれないと著者らは述べている。
Excitation: 非線形なチャネル間の相互関係を学習し、複数チャネルが強調されることを許可するような設計になるように、ReLUを挟んでSigmoidを使っている。2層の全結合層で途中で削減率rをもちいてネットワークをいったんくびれさせている。
そして最後に元の特徴マップにSEブロックの結果をかけ合わせることで、特徴マップを強調することができる。
前述の通り、SEブロックはCNNの特徴マップを出力するところなら組み込むことができ、VGG, Inception, RexNet, ResNeXtなどに適用できる。
SEブロックを追加してもパラメータ数の増加はSE-ResNet-50で約10%程度。推論速度も数ミリ秒程度の増加に抑えられており効率的。
SEブロックをCNNの最後の方に置くと、特徴マップの枚数が多いため計算量がその分増えるが、最後の層にSEブロックを追加するのを止めても性能はそれほど変わらずパラメータ数を削減できると論文中で議論している。
様々なデータセットでSEブロックを追加してあげることでSoTAを達成した。
Ablation Studyとは構成要素を1つだけ抜いた手法を比較すること。他のパラメータを固定して、あるパラメータを変化させた場合の挙動を調査している。
Reduction ratio r: Reduction ratioを増やしていくと精度は落ちていくが、線形の関係ではない。Reduction ratioが小さいと精度が上がるがパラメータ数が増える。16くらいが精度とパラメータ数のバランスが良いと述べられている
Squeeze Operator: Global Average PoolingとGlobal Max Poolingを比較したが大差はない。ここの選択にはSEブロックは頑健
Excitation Operator: 最後のSigmoidをReLUやTanhに置き換えた結果が示されているが、Sigmoidが一番良い。
Different Stages: ResNetのステージのどこにSEブロックを入れるかで実験しているが、どこでも精度は向上する。どこに入れるかは互いに補いあう関係なので、複数個所入れると精度がさらに上がると述べられている。
Integration Strategy: SEブロックをどこに入れ込むか。大差がないので、入れ込む一に関しては頑健だろうと述べている。
SEブロックの役割を現実的なレベルで理解するための考察が述べられている。Global Average Poolingを行わないNoSqueezeというモジュールを構成し、精度を見るとSEブロックよりも下がる。これはSEブロックが特徴マップ全体の情報を活用していることを示している。また、Excitationの理解のために、ImageNetの異なるクラスの画像に対して特徴マップが各層でどのように反応しているかを見ている。
SEブロックは強力。チャネル間の相互関係を利用した精度向上手法であり、今後はこのような方向性の研究が出てくることを期待している。著者らは最後にチャネルの重みづけを、ネットワークの枝刈りに使えるのではないかと提案している。
非常に簡単な構成で、精度が向上するのが驚き。Kaggleなどでも使われるようになってきており、解説記事も多いので理解はしやすかった。
NeurIPS 2018の論文で「Modern Neural Networks Generalize on Small Data Sets」という論文があったので読んでみた。
ニューラルネットは大規模データで成功を収めてきているが、小規模なデータに対しても過学習しすぎることはなく結構良い精度が出る。大規模パラメータを持つネットワークであっても上手くいく理由はパラドックスだと言われていた。
この論文ではニューラルネットを複数の小規模なネットワークに分解して性能を見ることで、大規模ニューラルネットがランダムフォレストのように複数のモデルのアンサンブルとして予測を行っていることを示している。
このようなサブネットワークを集めることによって、過学習しすぎることなく小規模なデータセットに対しても良い性能を出せている。
ニューラルネットの分解方法として、線形計画法を用いて各サブネットワーク同士の相関が低くなり、サブネットワーク自体の性能も高くなる分割を探している。
実験として、確率的に生成された2次元疑似データセットでベイズルール、ニューラルネット、ランダムフォレストの境界を可視化している。ランダムフォレストでは一つ一つの木は高いバリアンスを持っているが、集計することでバリアンスを減らせていることが分かる。同様にニューラルネットも分割した複数のサブネットワークたちはバリアンスが高いが、1つのニューラルネットにまとまると集計されてバリアンスが減っている様子が分かる。
実際に、UCI Machine Learning Repositoryから小規模データの116データセットを用いてニューラルネットとランダムフォレストの精度比較も行っている。ニューラルネットは10層、各層は100ノードと比較的大規模なものであるが、大体のデータセットでランダムフォレストに近い性能が出せている。また、ドロップアウトを使うとさらにランダムフォレストの結果に近づくことができており、ドロップアウトが正則化の一手法として機能していることが分かる。
小規模データに対するニューラルネットワークの活用可能性については、最近気になってい分野なので継続して論文を読んでいきたい。
KDD2019のApplied Data Science Track Paperからピックアップして「NPA: Neural News Recommendation with Personalized Attention」という論文を読んだ。
ニュースをユーザ毎にパーソナライズして推薦する手法の論文で、Attentionのメカニズムをユーザとニュースタイトルの両方に用いることで高い精度を実現している。
この考え方の背景には、異なるユーザは普通異なった興味関心を持っており、同じユーザであっても複数の興味を持っているため、異なったユーザ同士が同じ記事を違う興味からクリックする可能性が考慮されている。つまり、あるニュースのタイトルがあったときにユーザによって着目した単語が異なってクリックしたということをモデル化している。
細かい精度向上のためのポイントとしては、推薦分野の特徴として興味を持たれない負例サンプルが非常に多く不均衡なデータのため、Negative samplingを施した方が精度が向上している。
いくつかの従来のアルゴリズムと精度比較を行っているが、複数の指標で有意性を持って精度向上を達成している。
実験結果を見てみると、異なるユーザごとにニュースタイトルのどこに着目しているかが分かり、あるユーザはスポーツに興味があり、他のあるユーザは映画に興味があるなどの指向が見えてくる。
この研究ではユーザとニュースタイトルのAttentionを使って推薦を行っていたが、次はニュース本文も使っていく方向に進んでいくと考えられる。そうなると入力が長くなるので、どのように計算量を減らしたり無駄な文章を減らすかなどの方向もポイントになっていくのかもしれないと思った。
KDD2019の論文を少しずつ読んでいってる。特にApplied Data Science Track Paperの方は、企業で実際に機械学習を運用している際の話が書かれているので面白く読める。
今回はMicrosoftの時系列異常検知の論文を読んだ。
https://arxiv.org/pdf/1906.03821.pdf
Microsoftでは定常的にモニターしている時系列データとして400万件ほどのデータがあるらしい。これだけの規模になると何らかの自動化の仕組みで異常検知をしないと追いつかない。
実際にMicrosoftではこの論文の手法を用いて、異常が検知されるとメールが飛んでくるシステムになっていて、メールのリンクから異常時の時系列プロットへと飛べるようになっている。
ただ時系列異常検知の難しい点として、以下の3点が挙げられている。
この論文ではSpectral Residualモデルという画像のSaliencyを表示する手法を、時系列データに対して適用し、その後1次元CNNを用いて異常検知する方法を提案している。
時系列データの異常が発生した箇所というのは、結局はデータの中で目立つ箇所であるので、Saliencyで着目すべき箇所を検出するとそこが異常個所だったりする。
手法の細かい点では、いくつかの工夫がなされている。例えば、Spectral Residual手法は、予測する点がウィンドウの中心位置にあった方が精度がよいので、予測する際には後ろ何点かを前のいくつかの点から予測してからSpectral Residualを算出する工夫が行われている。
実験として、実際の時系列データに適当に異常値を注入してそこを予測できるかを、既存の時系列異常検知アルゴリズムと比較している。今回のSR-CNN手法は、他のアルゴリズムに比べて精度や処理速度を考慮するとよい結果が出ている。
また、Spectral Residualを用いることで、教師なし学習として異常検知を行う手法が挙げられているが、もしデータセットに異常のラベルがついている場合は、Spectral Residualを一つの特徴量とみなして、後段の処理をCNNからDNNに置き換えるとさらに良い精度が出るとも報告されている。
実際にMicrosoftで時系列異常検知に用いられているモデルであるという点で信頼がおける手法だと考えられる。Spectral Residualを計算して時系列データから顕著な点を前処理的に用いるという考え方は面白かった。