Machine Learning Casual Talks #9 に参加してきた

[Machine Learning Casual Talks](https://mlct.connpass.com/event/120451/) に ブログ枠で参加してきました。

当日の発表内容をまとめます。なお、発表資料などは随時更新します。

# Talk

## Data Engineering at SmartNews

- Role 
  - Data Analysis や ML には Data Engineering の下支えが必要
  - 体制
      - Data scientist 5名
      - ML engineer 12名
      - Data engineer 2名 
- Infrastructure
- AWS based
    - Data Store: S3
    - Workflow management: Airflow
    - Batch processing: Hive, Spark
    - Interactive Query: Presto
    - Stream processing: Kinesis + Spark Streaming
    - GUI for SQL: shib, superset
    - BI Dashboard: Chartio
    - Analytics Tool: Jupyter hub
- For Data analysis
    - Presto 
        - Hive metastore に乗っているデータを Presto でクエリする
    - Airflow
        - ETL の実行管理、依存性管理
        - Version の更新が頻繁にある
            - DAG の検証環境が必要
    - DataOps
        - Data engineering まわりのキーワード
        - [DataOps in Seven Steps](https://medium.com/data-ops/dataops-in-7-steps-f72ff2b37812)
            - Work without Fear
- For ML
  - ML in product
      - カテゴライズ
      - recommendation
      - push のパーソナライズ
      - 広告配信の最適化
      - LTV の予測と打ち手
  - Pipeline
      - Apache airflow でエンドユーザーのための機械学習パイプラインを構築する
  - AWS sagemaker
      - Jupyter で train/eval/deploy が Python API を叩くだけなので組み込みやすい
      - Train Deploy .. Inference まで Sagemaker がよしなにやってくれる
      - 課題: model 作りっぱなし問題
          - 継続的に開発していって 時間の流れとともに経過が見えなくなっていく
      - 対策: Sagemaker Airflow Presto による Workflow
          - data updata train eval deploy を継続的にしたい

### 発表資料

- https://speakerdeck.com/satoshihirose/data-engineering-at-smartnews

## LegalForceにおける契約書言語処理システムの開発について

- 主な機能
    - 検索書検査
        - チェックポイントを抽出して、修正例を提案してくれる
    - 条文検索機能
        - 過去の文書のなかから検索できる
- 体制
    - サービス開発 と研究開発に分かれる
    - 研究開発は API をサーブする
    - サービス開発は App をつくる
- 研究開発の役割
    - API と Demoの開発
    - Infra(Elasticsearch など) も
- 契約書言語処理の特徴
    - Good
        - ある程度パターンある
        - 主語が必ずある
    - Bad
        - 論文ない
        - データ公開されてない
        - 文書が特殊な構造
- チャットボットに近い
    - 入力がテキスト、出力もテキスト
    - 構造にマルチラベルをつける
    - 機械学習とヒューリスティクを活用
- 非エンジニア向けツール
    - アノテーション
    - DSL
- AI 開発の心得
    - ML を使わなくてもよい方法をまず考える
        - 時間がかかる
    - 仮説検証までやりきるのが研究開発
    - Web API も責任持ってつくる
- 事例紹介
    - やりたいこと: 条に分割したい
    - 結構パターンがあって ロジックがスパゲッティ化
    - 処理を3分割
        - 行分割
        - 行ラベルつけ
            - 正規表現
        - まとめる
            - オートマトンを使ってロジックをシンプル化
    - 機械学習を使わなくてもやりたいことは実現できる

# LT

## Pytorch強化学習フレームワークHorizonのドキュメントを読む

- Chainer と Keras にも RL がある
    - Pytorch にもきた
- README
    - モデリングとトレーニングには Pytorch
    - serving には caffe2
    - ワークフローが含まれている: 前処理など
- Abstruct
    - プロダクションユースケースを念頭に置いている
- Introduction
    - 大規模データセットに対する処理が重要となる
- Data processing
    - ログデータを変換する Spark Pipeline がある
- Future normalization
    - 特徴量の正規化が重要
    - 正規化パラメータを決定するワークフローを備えている
- Trainning
    - GPU サポートあり/ マルチGPUはまだ
- Case study
    - Facebook 
        - CTR の予想に supervised learning だったが、 Discreate-Action DQN モデルにした

### 発表資料

- https://www.slideshare.net/takashimogami/pytorch-horizon-135202122

## Graphの推薦システムへの応用

- Graph conv net のアルゴリズム紹介
- なんで?
    - データがすくない
    - すくないからグラフ構造がメモリに載るかも
- GCMC
    - (内容にキャッチアップできませんでした..)

### 発表資料

- https://speakerdeck.com/nishiba/graphfalsetui-jian-sisutemuhefalseying-yong

## Webサービスにおけるデータサイクルのデザイン

- 悩み
    - ユーザーにとって良いものと研究にとって良いものが異なる
    - インパクトと品質のトレードオフ
    - 外注的に取り組むとコントロールできる幅が狭くなる
- 取り組み: キャッチコピーの自動生成
    - 文字数などの制約が多い
    - テンプレの手法は厳しい
    - ユーザーの口コミからキャッチコピーを切り出す
        - 流暢性とキャッチコピーらしさで評価
        - ロジスティック回帰だけで作れる
- プロダクトとユーザーの共生関係が作れるといい

### 発表資料

- https://paper.dropbox.com/doc/K3DVqcbyXeJfhUByAI6ko