今日から始める人工知能 × 機械学習 Meetup
参加遅れたので途中参加&内容に対する理解度が怪しいので嘘ついてたら 優しく 指摘していただければと思います……。
参加者のガチ感強め……。
(タイトル見れず)
ワークスアプリケーションズ社 石野明氏
機械学習を始めてもなかなか期待する結果が出てこない。テクニックがある。
Cos Similarity コサイン類似度
- 比率が一緒なら出てくる類似度も一緒
Kullback-Leibler Divergence
まとめ
- Analysis and Feature Engineering データをちゃんと見る
- Skewed Data かたより。headとtailを切る
- Smoothing
- Metrics
(途中参加だったのでTL遡りつつ)
- データが多いと誤差範囲が狭まるので良い
- データが多すぎると性能的に処理できなくなるので減らす
- ただしサンプリング(無作為抽出)は低頻度要素がなくなるのでダメ、headとtailを切り落とす
- データの特徴に応じてデータをキレイにする
- ただし答えがわからないと出来ないという鶏卵問題
- 短期間でやるならディープラーニングよりもワイドな機械学習のほうが精度が出る場合がある
理解度が足りなすぎてあまり理解できなかった……orz
##(タイトルスライド見逃した)
オプト社 加藤尊氏
アドテクにおける機械学習
- A/Bテスト
- バンディット戦略
- A/Bテストに対して、最大効率の「比率」を探す
- ε-Greedyアルゴリズム
- 確率εで現時点で最適を選び、確率(1-ε)でより良いものを探す
- Softmaxアルゴリズム
- ε-Greedyに対して、最悪と思われるものは避ける
- UCBアルゴリズム
- オライリーのBanditAlgorithmsの付録コードがGitHubに上がっている
クリック率と広告表示回数をUCB値として最適化したら40%以上改善された
ゲームAIの機械学習
ゲームの指し手の決定は「探索」と「評価」で行われる
将棋と囲碁
-
将棋
- 全探索ベース
- 手数が限られる、初期探索30ほど
- 「技巧」など
-
囲碁
- モンテカルロ探索
- 手数が多い、初期探索361
-
原始モンテカルロ法
-
モンテカルロ木探索
プレイアウトを増やすことで強化していく(Alpha Goは1手4.8msecもかけているのでプレイアウトの活用は余り出来ていないはずなのに強い)
最近のゲームAI
- value network
- policy network
Alpha Goは併用している
教科学習させていく。
アマチュア3段くらいまでは強化できるらしい。
Deep Q-Network (DQN)
逆強化学習
報酬から学習させていく
最近のトレンド
参考:ゼロからDeepまで学ぶ教科学習
ぷよぷよAI大会
ぷよぷよAIの難しさ
- 考慮時間が短いので探索と評価ができない
- 貪欲探索したいがうまくいかない
実践的!人工知能x機械学習 iettyの場合
ietty社 大浜毅美氏
サービス概要
チャットで話しながら部屋が決められる
お部屋探されサイト
なぜ「不動産xIT」に人工知能を持ち込むのか
- Amazonで買えない10のもの
- 不動産が買えない
- なぜECで売れないのか
- 高すぎてポチれない
- 規制がある(宅建業法)
- 検索、レコメンデーションといった要素技術が未発達
- 固有の困難さがあるので流用しにくい
不動産レコメンデーションの課題
- 通常1顧客1購入
- 在庫は常に1個
- 商品点数は世帯の数と同数以上
なので
- 商品詳細ページの作成単価が高くなる
- 購買バースの共起計測ができない
不動産業界の現状
- 集客のみのIT化
- 詳細情報の提供・内見は電話とメールと店舗
- 品切れがあり得る
- 存在しない物件をおいてもわからない
- 品切れがあり得る
- 店舗での「接客」
- 人力マッチング
結論
従来の手法では解決できなさそうだから人工知能の利用を検討する
iettyの使い方
- 条件を入れると日々AIや人間が選んだ物件が送られてくる
通常の検索との違い
- 客は高望みする
- 現実的な検索条件にして(条件緩和)納得感のある提案を行う
- 譲って貰えそうな条件を勘ではなくAIで行う
今はルールベース、これから機械学習に挑戦
購買データは教師データに使えないので、営業員の提案データを教師データとする
クラスタリング協調フィルタリング
ハイブリッドクラスタリング協調フィルタリング
アルゴリズムの評価
- 学術的には分割法などがある
- さっさと導入したいのでプロ営業員の直感との差異を確認
- 実戦投入までの時間を短くしたい
WACULの技術と特徴変換について
WACUL社 伊藤真央氏
使用技術
-
Scala
-
Mesos
-
Spark
-
Cassandra
-
commons.math
-
DL4j
- 時系列解析、リカーデングニューラルネットワーク?
-
Breeze (Matlabっぽい感じ)
-
JLAPACK
解析要素技術例
- 最小2乗
- DL
- 回帰
- 時系列解析
- 統計的検定
- Baysian Network
特徴抽出とは
事象→数値化・ラベル化→特徴抽出→機械学習
ディープラーニングは数字入れればいいだけ?
特徴抽出してから入れている
- Domain Specific(SIFTとか)
- General
Representation Learning
AutoEncoder
- 次元削減
- 半教師ありとして?
- Domain Adaptationへの1つの回答として使える?
- 違う分布に対しての解を求める方法として
学習の効率化
- GPU
- 分散学習
解析方法
-
TopologicalDataAnalysis
-
Persistent Homology
-
Rips Complex
-
Vietoris-Rios
- ユークリッド空間上で距離を計算
- filteringでトポロジを形成?
実践
MNISTの実践をAuto Encoderでやってみた
- 手書き文字の特徴抽出
- RELU -> RELU -> RELU -> RELU -> Sigmoid
- AutoEncoderで30次元にしてSigmoid -> Sigmoid -> Sigmoid -> Softmax
- 95%くらい
BigData & Security - Signature & Model Hybrid Platform
サイバーセキュリティクラウド社 渡辺洋司氏
並列分散ストリーム処理技術を基盤技術として、機械学習モデルを用いたアノマリ検知の研究開発、評劇型攻撃検知の研究開発
クラウド型WAFサービスの提供
- 攻撃遮断くん
- 攻撃見えるくん(無料)
シグネチャベースで検出する場合の方法
- 入力データ
- HTTPサーバログ
- syslog
- 40億件/月くらいが蓄積
- 検出数
- 100万件/月
ログと検知データを扱った取り組み
- 月ごとの検知レポート自動生成
- 今はルールベースだが、置き換えていく
- ゼロデイ検知
- 誤検知の改善
- reCapcha 良質な教師ありデータを収集できる
ゼロデイ検知のためのモデル構築タスク
-
最適な特徴量と手法の選択がキモ
- パス、リファラ、UA
- パラメータ、値
- 呼び出し順序
- HTTPヘッダ、ステータス
- どれを使えばよいのか
- そもそもどうやって正解を判断するか(ゼロデイだから答えが用意できない)
-
Slowアタックとかどうなるのか
-
教師あり学習でアプローチ
- 過去の検知データはある、ただしご検知が含まれている(Grand Truthがない)
-
既知の亜種なら見つけやすい
- 目標はそこじゃない
-
検証の難しさ
- 検出対象は「未知」のもの
-
教師なし学習でアプローチ
- 特徴量の発見の難しさ
- そもそも集めているログで十分なのか(feature engineeringの分野)
- 検証の難しさ
- 教師ありよりも更に難しい
- 検知したと思ったらアプリバージョンアップでパラメータが増えただけだったり
- 特徴量の発見の難しさ
-
シグネチャ型
- 検知ルールが明確
- シグネチャにない攻撃は検知できない
-
モデル型
- 未知の攻撃を検知できる可能性
- 検知の理由が不明確
Apache METRON
For big data cyber security analytics
CiscoのOpenSOCがコードベースになっている。現在Technical Preview2が公開中
- リアルタイム検知の処理をMETRONを中心に
- Hadoop / Spark周りでモデルの構築、リファインを行う
Anomaly Detection in Deep Learning
Skymind社 Adam Gibson氏(CTO)
Deep Learning book(O'reilly)の著者。
実用(応用)のための本です。
DL4jの作者。
顧客は通信会社と金融業界に集中している。
Anomalyとは
-
異常なデータパターン
- Networkへの侵入検知
- データセンターでの機器故障
-
ネットワーク侵入検知はCanonicalと開発
DeepLearningとは
- Googleが先行していて、アドテクによく使われいていた
- 手法を流用して異常検知にも使える
教師なしUnsupervised
教師ありSupervised
Auto Encoder
教師なしの場合はAutoEncoderという仕組みを使う。
要素間の距離を計算して、正常異常を検知する(異常データは距離が大きくなる(外れる))
RNN/Time Series
many to oneがよくあるケース(一定期間内で正常/異常などの1つの解を得る)
apache nifiでシステム間のデータフローを制御してのデモ。
感想
- なんだかんだで現状はルールベースが多い
- 課題を感じてモデルベースの検討を進めている様子
- 今までの経験があった上でのモデル構築、でも結構大変そう
- 学術的な方面どこまでやるか
- apache nifi便利そう