FinTechと書きましたが、実際は、気になる研究を斜め読みした、感想も書いています。
8th May 2019
ReWork Deep Learning in Finance Summit
3月19日・20日に、ロンドンで、FinTech / AIの活用事例についてのサミットが開かれた。そのレポートをまとめました。
-
Jackson Hull (British financial services company GoCompare Group)
DLを使った顧客体験(UX)の改善について話した。- 契約データを更に活用→顧客へより良い金融サービスを提供
- 他のFinTech ventureと組み、MLとデータサイエンスのベストプラクティスを共有。AIを組み込んだAPIを実装中。
- "Open Learning"(ML開発のオープンコラボ)が次のステップだという。→既にKaggleとかあり、さまざまなデータセットで競争されKernelもあるので、目新しくはない。
-
Huma Lodhi (principal data scientist from Direct Line Group)
「保険・リスク管理業界へのScene understanding(状況理解)のテクノロジーの重要性について」と「リスクモデリング(金融商品リスクで言えばVaRのようなものか?)や保険金支払いへのDL応用の成功例」を話した。- 統計的な手法:パラメトリック、事前知識必要→小さなデータセット・少ない変数にはうまくフィット。
- ML手法:ノンパラメトリック、事前知識不必要→大きなデータセットにも対応。
- MLの方が統計的より特に優れている点:新しいデータセットに一般化したとき、よりworkするらしい。→単に「汎化性能に優れている」のではなくて、「新しいタスクに転移学習などしてモデルを再利用可能」と言っているのか?
-
Manuel Proissl (head of predictive analytics at UBS)
「ドメイン特化したNNでの、Human-Augmented Training(人間によって増強されたトレーニング)」と「モデル透明性(Black boxだから)」
MLの応用が、どのように、データからモデル化できる部分を抽出しているのか説明→NNはこの部分を数理モデル化し、予測する。 -
Rich Radley (customer engineer from Google Cloud)
Googleは、金融サービスの組織と組んで、いろいろやっている。- 大事なのは、model interpretability(モデル解釈性)→信用、バイアス緩和(?)、パフォーマンス向上に役立つ。
- 新しい**BCM(Baysian Case Model)**を構築する重要性→評価時間(?)・解釈性を向上するキーとなるfeature(特徴)を同定できるから。
27th April 2019
Andrej Karpathy blog "A Recipe for Training Neural Networks" 25th April 2019
NNでの良くあるmistakeを予防するための方法論について。
実務的に非常に役立ちそうだったので、私自身100%理解してはいませんが、できるだけまとめます。
筆者はまず、NN実装関連で見受けられる、2つのObservationを列記。
-
NNのTrainingは"Leaky Abstraction"である。
"Leaky Abstraction"とは、Joel Spolskyが言い始めた概念。
高度に関数化されており、ユーザーは欲しいものを書くだけで、中身をどう計算するか知る必要がない。ただ、**正しくつかわないと、間違った(期待しない)結果や、意味のない結果を得ることがある。**そういう機能のこと。- Requestライブラリ: GET/POST, HTTP connection etc.のロジックを知らなくても、やりたいことを簡単に書ける。ロジックは難しいが、Leakはない。(Leaky abstractionではない)
- NN: 残念ながら、上記のようになっておらず、特に、逆伝搬法は、Leaky Abstractionとなっている。以下は例。
- 勾配消失・勾配爆発
- Dying ReLu: ReLuは負の領域では値が0(勾配が0)。重みの更新の結果、値が大きく負になった場合、重みが更新されなくなる現象。(https://qiita.com/t-tkd3a/items/243b523f962f26281037)
- RNNでの、勾配消失・爆発問題。
- DQNでのClipping(原文参照のことhttps://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b)
-
NNは、何も言わず、失敗する。
NNのフレームワークは、どこでミスしたか、エラーメッセージからわからない。
筆者は"Fast and Furious Approach"でNNを訓練しても、うまく行かない、と結論付ける。そこで、注意深く、上記のようなエラーを予防するため、筆者が実践する"Recipe"を公開。
-
データと一体に
訓練データを徹底的に調査する。
- サンプルデータのスキャン: 破損した画像・ラベル、重複したデータはないか?
- 分布の確認:データの不均衡性(imbalance)やバイアスはないか?
-
パターンの発見:人間(自分自身)の目・脳で、どのように分類しているか?にも注意すべし→構築するNNのArchitectureのヒントになるぞ。
- 局所的な特徴のみ?/大局的な特徴が必要か?
- データにどれくらいの多様性(variation)があるか?
- Spurious variation(偽の多様性。ラベルが正しくないということか?)はあるか?→どうやって、データのPreprocessで除去するか?
- 空間的な位置は重要?/average pooling(見ている領域のどこかに、パターンがあれば発火)した方がよい?
- 画像をダウンサンプルできるか?(タスクに詳細な情報が必要?)
- ラベルがどれくらいnoisyか?
- 簡単な自作NNモデルを走らせ、誤予測ケースを調査。もし、予測とデータから見て取れるパターンが矛盾→何かが抜け落ちている・・・
- 最後にデータを再確認:ラベル毎などで、分布を視覚化。分布の各軸でoutlierを見てみる。データの質の問題やpreprocessでのバグを発見することが多いらしい。
-
End-to-Endの訓練・検証環境を構築
データは理解したので、End-to-Endの訓練・検証コードのスケルトンを作成。間違いのないスケルトンを作れば、あとはモデルを精緻化すればよい。
- Linear / ConvNetのような小さなモデルで。
- Seedを固定:結果の再現性のため
- シンプルに:data augmentationなど不必要なRegularisationテクニックなどは使わない。
- テストセット全体で、精度を確認:ミニバッチ上でだけの確認は、今の目的には不十分。
-
訓練ロスの初期値:想定される初期値通りか確認。softmaxなら
-log(1/n_class)
らしい。 - 重み(バイアス)の初期値:訓練ロスが、最初のミニバッチ数stepで"hockey stick"カーブにならず(最初の数stepでは、基本的にバイアスを学習するらしい)学習がスムーズに進むように、出力層のバイアスを正しく設定する。回帰で、訓練データ上で平均50なら、出力層のバイアスを50に設定。不均衡なデータセット(1:10でpos:neg)の場合、出力層のlogitsのバイアスを0.1に設定。
- 人間のベースライン:Accuracy(精度)など、人間がチェックできる測定基準をモニタリングするべし(訓練ロスは人間にはピンと来ない)。
- インプットと無関係なベースライン:例えば、インプットを全て0にして、同じモデルを学習させる。元のデータセットに対して結果は悪くなるはず。そうなっているか(モデルは、訓練データセットの情報を反映しているか)?
- (2,3の例だけ含めた)1バッチにOverfit:モデルの層やユニットを増やして、訓練ロスを0にできるか確認。そうならない場合、どこかにバグあり。
- 訓練ロスは低下するか:シンプルなトイモデルを使用しているので、underfitしているはず。少し、モデルの複雑性を増してみて、訓練ロスが低下するか確認。
-
NNへ入力する値の確認:TFなら
sess.run()
に渡すテンソル値が、正しいデータになっているか確認。筆者はこれを確認することで、何度もミスを見つけたとさ。 - 予測のダイナミクス:学習が進むにつれて、固定した検証データセット上で、予測がどのように変わっていくか可視化→どのようにモデルの学習が進んでいるか掴めるらしい。
- など
-
Overfitting
まず、十分大きな(パラメタ数が多く自由度のある)モデルを作り、訓練データにOverfitさせる。
- 関連文献のコードをパクりなさい
- Adamを使っておけば安心
- ちょっとずつモデルを複雑にすること:一気にいろいろやると、間違えるぞ。一つずつ導入し、期待通りの、改善がみられることを確認。
- デフォルトの学習率の減衰を信用するな:筆者は、LR decayをオフ(定数のLRを利用)にして、本当に最後に、decayを弄るらしい。
-
Regularisation
十分大きなモデルが見つかったら、正則化をして、いくらか訓練ロスを許容し検証ロスを改善する。
以下、筆者のアドバイス。- まずは、もっと多くのデータを探すのが、王道。
- data augmentation
- creative augmentation (fake dataの作成):domain randomisation, simulation, the hybrids, GANなどなど。
- Pretrain
- 教師あり学習に注力:教師なし学習を使ったPretrainはあまり成功していない
- Spurious signal(偽のシグナル)を生みそうな特徴を除く。
- spurisou signal: Cifar10での例
- 女性→トラックのラベル
- ねこのしっぽのみ→ねこのラベル
- 飛行機と車→飛行機のみのラベル
- spurisou signal: Cifar10での例
- 粒の細かい画像が必要ない→画像を小さくして入力
- より小さなモデルを使用
- バッチサイズを小さくする。
- などなど
最後に、第1層の重みを出力し、特徴して意味のあるエッジ(画像分類では、第1層で、直線パターンをよく認識する)をとらえているか?を確認するといい。Activationにも問題があることがあるので、注意。
-
Tuning
広いモデルArchitectureの中から検証ロスの小さなモデルを探すためのTips
- グリッドサーチよりランダムサーチがよい(http://jmlr.csail.mit.edu/papers/volume13/bergstra12a/bergstra12a.pdf)
- ハイパーパラメータの最適化:Baysianハイパーパラメータ最適化で成功しているものもある。
-
最高の結果を搾り取る
いいモデルとハイパーパラメータを見つけたが、もう一工夫して、SOTA(State-Of-The-Art)を獲得できる!
- アンサンブル:どんなケースでも、約2%の精度向上が見込めるらしい。(あるいはhttps://arxiv.org/abs/1503.02531)
- 訓練しつづけること:訓練ロスが小さくなっても、反直観的に、訓練は続いている。
15th April 2019
AI運用は人知を超えるか 海外株投信で検証
AIを用いた運用についてではなく、AIを扱うテーマ型投信のパフォーマンスについての話。紛らわしいタイトル。
- 記事では海外株ファンドの年初来リターンをランキング。
- 上位にAI関連投信が目立つ。
- 例えば、一位は、三井住友DSの「グローバルAIファンド」。運用者がAI関連株を選び出すらしい。
- AIだけでなく、FinTech、ロボット、バイオテクノロジーなどのテーマ型が上位に並ぶ。
- AI運用ファンドの例として、「GSグローバル・ビッグデータ投資戦略Bコース」
- 海外先進国の株式市場並みの運用成績。→AI運用ファンドは海外株式に広く分散投資しており、株インデックスに近い構成銘柄になっているのかもしれない。
- 上記の「グローバルAIファンド」の方がアウトパフォーム。→AI関連株に絞って運用していることが原因か?
- 「全く新しい観点から将来の有望銘柄を発掘するなど、過去・現在のデータを分析してもあまり役に立たないであろう分野でのAI活用は不向き。しいて言えば、超短期の株売買なら利用できる余地があるのではないか」と東大の和泉潔教授。
- テーマ型投信の人気は離散しがち。
- 2017年以降に米国FinTech、ロボット、AIなど銘柄が有名に。
- 2018年10月、米国発、世界的株安を受け、解約による資金流出が目立つように。現在持ち直しつつあるが、戻り待ちの売り解約が続いている。
12th April 2019
"Lithium-Ion Batteries" - the first machine-generated research book -
https://link.springer.com/book/10.1007/978-3-030-16800-1
個人的には、Auto textsummarisorの技術を知りたい。
- ベーテ大学とSpringer Natureの共同研究で生まれた、初のMachine-Generatedな学術本。
- "Beta Writer"というプログラムに、Springer Natureのコンテンツプラットホームの情報を食わせて、Auto-Textsummarisorをし、先行研究のまとめ本を作成。
- 「学術本の出版」の新時代がスタートする!と本に書いてある。
- 読者が特定分野の先行研究を理解するのをスピードアップ
- イントロには、技術的なうんぬんより、「誰が本の作者といえるか?」など、出版界・学術界で起こる問題を提起している。
11th April 2019
Neuro-Symbolic Concept-Learner (NS-CL)
https://openreview.net/pdf?id=rJgMlhRctm
ICLR2019での、MITとDeep Mindの共同研究。人間的な「視覚情報を言語(概念)化する」ことは、いかにもAIってかんじ。ただ、先行研究をよく知らないので、個人的にはどこがすごいのかいまいちよくわかっていませんが。。。
動機:「人間はどうやって、視覚的概念(visual concept)を学ぶのか?」
- 「視覚(物体)情報」と「言葉」の組み合わせから学ぶ
- →より複雑な「物体」と「言葉」についての質問に答えられるようになる。
- MLで実現しよう!→NS-CLの提案
訓練データ
- 画像とQ&Aのペア (画像には何のAnnotationも付与しない)
モデル:3つのmoduleからなる
-
Neural-beased perception
- 入力画像(複数の物体が無造作に配置されたもの)→物体認識→知覚的表現(どこに何があるという、「見たままを表現」)
- viaully-based semantic parser (意味的構文解析)
- Questionをexecutable programに変換
- symbolic program executor
-
NS-CLの何がすごいのか?
- 「視覚的」にも「言語的」にも、もつれを解いた(disentangled)表現
- 入力シーン(入力画像)と質問(→semantic program)に関して、一般化(複雑化)できる。
- 例えば、物体の数が増えると、物体間のrelationを学習する必要があり、組み合わせ的に複雑化する。これをうまく学習できる。→先行研究(例えばAnderson et.al. 2018では難しいらしい)
- 新しい色の物体や、さらに新しいタスクへ転移(transfer)できる。
- state-of-the-artの精度を達成 (CLEVERデータセットを利用)
annotationが訓練データに不必要。
- 「視覚的」にも「言語的」にも、もつれを解いた(disentangled)表現
10th April 2019
(株)バリューデザインが楽天ペイ(QRコード決済)に対応
- バリューデザインはハウス電子マネー管理システム「バリューカードASPサービス」を提供。
- 加盟店ではposレジを使用(販売情報を管理するシステムを搭載したレジ→分析し売り上げ改善を図る)。
- この度、楽天ペイに対応。
- posレジへの実装は低コスト。
- 加盟店で商品購入されると、posレジから情報がバリューデザインに流れ、そこで電子マネー決済か、他のQRコード決済(楽天含む)か判断し、使用した決済サービス元へ、決済データを送信。
- キャッシュレス化は推進するか?
9th April 2019
時事通信がxenodata labと提携
- xenodata labはxenoBrainという企業業績予測サービスを提供。
- 元々、大手金融機関で、上場企業の分析業務に利用されていた。
- global企業の予測に強かった。
- ニュース・決算情報→NLPで分析。経済ニュースから「企業に後どんな事象が発生するか」「企業の業績変化」を予想。
- 時事通信が保有するニュース(国内中心、過去10年で100万本)を利用し、国内企業の予測が配信可能に。