pandazx's blog

Hadoop, データ分析など雑多な技術ブログ

メルカリ CRE Server Side Tech Talk vol.2に行ってきた

mercari.connpass.com

に行ってきた。以下はメモ

CREチームの紹介

  • CREとは、お客様からの信頼性向上を目指すエンジニア
  • 元々はCXIで、カスタマーセンターCSのサポートがメインだった
  • これをメルカリのユーザーにまで対象を広げた

メルカリの商品監視を支える技術

機械学習によるマーケット健全化を支える技術

  • LovemachineというML基盤を独自開発しており、OSS公開予定だが、人手が足りなくて、あまり進んでいない

機械学習によるマーケット健全化の施策

  • スピーカーの自己紹介
    • Solarのクエリチューニング
    • 近所検索を開発
  • CSには偽ブランドを見分ける鑑定士がいる
  • 質問
    • 商品監視の機械学習モデルは複数ある?複数の結果をどう解釈してる?
    • 監視目的別にモデルがある

「アプリケーションエンジニアのためのApache Spark入門」出版記念セミナーに行ってきた

connpass.com

に行ってきた。以下はメモ

Apache Spark入門書籍の紹介

  • 理論よりも使い方に重きを置いた入門書
  • サンプルのプログラミング言語Python
  • データ分析基盤に使われるOSS紹介
  • データ収集はfluentd, kafka
  • データ蓄積はhdfs, cassandra
  • ストリーム処理、簡易な集計分析はSpark structured streaming
  • バッチ処理はSpark SQL
  • データ分析はSpark MLlib, Jupyter
  • Sparkが注目されている理由はデータ分析プラットフォームの主要な機能があるため

Fluentd, Kafkaの紹介

  • 残念ながらスピーカーが私用のため、欠席

Spark Streamingについて

  • ストリーム処理はデータが無限
  • バッチ処理はデータが有限
  • ただ、Spark Streamingはマイクロバッチなので、データを有限として扱う
  • Spark2.3.0から継続実行方式が可能になる
  • ストリーム処理で発生する問題
  • データが発生した順に到着しない。out of order. ネットワーク遅延やサーバ間の時刻ズレなどが原因
  • データのグルーピングの概念
  • タンブリングウィンドウは固定長で区切る方式
  • スライディングウィンドウは固定長だが、スライド幅が異なる方式
  • セッションウィンドウは特定キー、特定時間内のデータを同一ウィンドウにまとめて処理する方式
  • 実際に到着が遅れて困る例。データが大幅に遅れると、どこまで、その遅れを待てばいいのか検討が必要
  • 対応方法としては、データ発生時刻とデータ処理時間を分けて管理する。加えてDBへの投入時間を管理する場合もある
  • どこまで処理したかの管理はwater markで管理
  • データ発生時刻が一定時間以上古い場合は除外する
  • 出力する値や集計方式として、処理完了したもの、追加部分のみ、更新部分のみを選択可能
  • これらのサンプルプログラムが書籍に記載されている

データの蓄積

  • Spark SQLとCassandraの紹介
  • Spark処理結果を出力先として、Cassandraがオススメ

データ分析について

  • データ分析プロセスCRISP-DM
  • 他にKDD,SEMMAがある
  • 資料は後日、公開

プロダクション投入に向けて

  • Sparkは計算資源といえる。そのため、ステートレス化できる。今風に言えばサーバレスにできる
  • AWS Glueを使うとHdoopクラスタなしにSparkを使える。GlueにHive metastoreを置いて、実データはS3に置く構成

サイバーエージェントの機械学習祭りに行ってきた

www.wantedly.com

に行ってきた。以下はメモ。

推薦アルゴリズムの今までとこれから

スピーカー:サイバーエージェント 内藤 遥

推薦アルゴリズムの種類

  • 協調フィルタリング
    • データがないと機能しない
  • コンテンツベース
    • データがなくても大丈夫。商品の特徴量を使う

GroupLens

Matrix Factorization

  • Netflix Prizeで登場したアルゴリズム
  • ユーザの暗黙的評価。閲覧1、お気に入り2、購入3という評価値とするなど

Factorization Machines

  • MFの改善手法
  • ただ、MFより予測の計算量が多い。TopNの算出に時間がかかる
  • 特徴量にドメイン知識が必要

RNN

  • 時間による変遷を考慮できる
  • クライアントブラウザの種類などのコンテキストを考慮できる

Collaborative Metric Learning

  • オンラインで近似的に高速に解ける
  • Amebaで注目してる手法

Amebaの推薦基盤

マルチメディア機械学習の取り組み

スピーカー:サイバーエージェント 藤坂 祐介

アメブロ画像カテゴライズ

  • ブログのAmeba公式ジャンルのカテゴライズを自動化したい
  • NLP+投稿画像認識
  • 内製のラベル付け管理ツールで30万枚の画像をタグ付け
  • 分類精度。t-SNE. top1 82.73%
  • アルゴリズムはKerasでResNet

スパム画像検知

  • エログロなどのスパム画像を検出したい
  • スパム画像は全体の0.1%
  • アルゴリズムはKerasでResNet
  • 教師データは日々の監視業務で作成
  • いい精度が出ていない

次の課題。マッチングアプリで業者が同じようなプロフィール画像を使い回すユーザがいるので検出したい

  • 画像をdhashで64次元に変換
  • Humming距離で類似度を計算
  • 7,8bitで良い精度が出て、実際に使われている

楽曲の盛り上がり検知をやってみた

  • 課題は楽曲のサビ検知
  • メロディ、サビ、その他の3分類で精度評価して、分類精度51%

大規模分散深層学習とChainerMNの進歩と課題

スピーカー:PFN 秋葉 拓哉

  • ChainerMNのMNはMulti Nodeの略
  • 分散深層学習を非同期でやるよりも、同期でやった方が精度が高い。大事なのはスループットではなく精度
  • ChainerからChainerMNに移行する際のコードの変更量は少ない
  • 2016年では分散深層学習すると精度が落ちる。しかし、2017年には精度が保てるようになった。しかも高速
  • 分散深層学習で2-3週間かかっていたものが256GPUsで1時間まで短縮されたが、PFNは1024GPUsで15分まで短縮した
  • 非同期型はネットワークの状況によって学習結果が異なるため、扱いづらい、チューニングしづらいのが難点
  • マルチノード構成にした場合、1Gbでは1台より遅くなる。10Gbで遅くならないぐらい。40Gbで戦えるかもレベルだが、未検証

cronで実行したシェルから呼ばれるRubyスクリプトの標準出力が出力されない

test.sh

#!/bin/sh
ruby test.rb
echo done

test.rb

puts 'hoge'

上記スクリプトがあった場合に、以下のようにcronを設定しても、test.sh のdoneしかtest.logには出力されない。

0 * * * * cd /home/user/tools; sh test.sh >> ./test.log

cronで実行される際、環境変数は実行ユーザでログインした場合はとは異なるという問題もある。

参考:cronで実行時に環境変数を読み込む - Qiita

以下のようにして環境変数を読み込む -l オプションをつけて、-c でコマンドを実行させればよい。

0 * * * * /bin/bash -lc 'cd /home/user/tools; sh test.sh >> ./test.log'

NEDO AI ベンチャーコンテスト採択企業5社の開発責任者が語る開発の最前線に行ってきた

【エンジニア向けイベント】人工知能の未来を語る ~ NEDO AI ベンチャーコンテスト採択企業5社の開発責任者が語る開発の最前線 ~
https://techplay.jp/event/658548

 

■1社目 Hmcomm
音声認識をやっている。音のプラットホームがライセンスビジネスで、その上にある音のソリューションで、SI向け

 

事例

  • 受付に人のいないホテル
  • 工場などの騒音環境で、雑音除去
  • コールセンターのオペレータとお客様の会話を音声認識して、帳票出力
  • 対話の返答は自動生成
  • 駅の遺失物問合せの自動対応

 

End2Endの音声認識

音声波形をCNNで画像認識的なアプローチを研究中。

 

マイク素子の単価が下がってきており、ハードウェアが作りやすくなってきている。

 

チューニングレスな最新手法の実利用はまだ難しい。まだ、チューニングが必要な状況。

 

マシン2テキストを研究中。

 

■2社目 アースアイズ
五感AIカメラ

  • 五感の内の1つ、目に関する機能について。
  • カメラが自動的に不審者を発見する。
  • 予測、予知して未然防止。
  • 独自に3D測距カメラを開発。20cm四方エリアに区分できる特許技術を保有

 できること

  • 人流分析:人の頭の位置をトラッキング
  • 商品移動:物が置かれた、持っていかれたことの認識
  • 万引き検知:ハードウェア費を除いた2350円/月

 

不審検知はレーザーでやってるので、夜でも大丈夫

万引き犯以外の泥棒などにも応用可能。イチからの開発は不要。

 

検出時の店員への伝え方

  • アプリを提供している。
  • カメラから音声を流したり、光ったりする。

 

■3社目 シナモン
契約書類関連のバックオフィス業務を改善

 

プロダクト

  • 文書読み取りエンジン。flax sccaner
  • チャットボット
  • レコメンデーション

 

今日はflax sccanerについて。

  • 不特定の帳票から必要な情報を読み取る。
  • pdf、word、メールなどに対応。

事例:銀行証券、保険の書類業務効率化

 

DLモデルを作るのは全体の一部で、システムとして成立させるためには、前処理、validationや変換などソフトウェア開発の方が比重が大きい。

 

ベトナムの大学からハイアリングする仕組みが出来ている。AIチームが30人。500人体制にしていきたい。

 

どのぐらい作業時間短縮につながる?ビジネス的な評価KPIは?

  • PoCで50人を25人にするぐらいの効果が得られている。
  • 契約書の処理はAIでの自動判断が許されないので、人がダブルチェックできるなどのアプリを提供している。すべてをAIで自動処理は目指していない。

 弁護士業務の単純作業は自動化できる。

 

■4社目 SOINN
Self Organization Incremental Neulal Networksの頭文字がSOINN

  •  汎用型の人口知能。社内で育てる人工知能
  • 教師なしクラスタリング
  • クラス数も自動算出。
  • 学習量が少ない。
  • 画像なら400枚実運用投入したこともある。地中レーダーをつけた車で走って、地下の地盤沈下の危険性をチェック。危険箇所の検出

 

目視検査。現場で熟練者がトレーニングして学習させる。

今回のNEDOではスマホでこの人工知能を育てるプロジェクト。

 

■5社目 BEDORE
対話型IFによる非構造化データ検索

対話エンジンがあり、接客、コールセンターの自動化、半自動化

 

シェルで二重起動防止

以下では、cronから実行すると常に二重起動と判定されてしまう。

OLDEST=$(pgrep -fo $0)
if [ $$ != $OLDEST ]; then
    echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。"
    exit
fi

そのため、以下のようにする。

OLDEST=$(pgrep -fo $0)
if [ $$ != $OLDEST ] && [ $PPID != $OLDEST ]; then
    echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。"
    exit
fi

理由は以下を参照。

障害メモ/cronからキックすると多重起動判定ミスする - ポケットがチケットでいっぱい

Team AI Meetup #1に行ってきた

スライド写真は後でUP

mercari.connpass.com

アジェンダ

  1. 「What can image recognition & machine learning do for Mercari?」 by 山口 拓真
  2. 「メルカリにおける機械学習システム基盤について」 by @Hmj_kd
  3. Q&A

What can image recognition & machine learning do for Mercari?

  • DNNのInception-v3でerror rate 29.3%。AWS上で評価
  • 誤認識した例:デザインがほぼ同じだが、靴のサイズが違うだけでメンズとレディースで違う。ヒトでも困難
  • うまくいった例としては、詳細カテゴリは間違うが、キッズ用品かどうかは当たることが多い。
  • ブランド認識と認識で注目した領域の可視化
  • アイテム詳細情報の推定
    • 5000万枚学習
    • 推定した結果をユーザが商品登録時の初期カテゴリとして使用(ユーザの操作負荷軽減)
    • 推定した結果をユーザが検索する際の色指定にも対応できる。青いスカート、赤いスカートなど
    • 色推定する際に重要な領域は識別でアテンションの高い領域を利用
  • Image Recognition System Architecture
    • GAEを基盤にkubernetes, docker, spinnakerを利用
    • Mercari APIから上記GAE上のImage Recognition APIを実行
    • Image Recognition API内ではキューを挟んでワーカーが動作
    • 推定はCPUで運用。GPUは使っていない。350msec/req程度で処理できれば現状は十分
  • 画像検索
  • ネットワーク
    • ブランド判別や商品アイテムの詳細推定は1つのネットワークで実現している
    • 計算コストの低減はPCAで次元圧縮

メルカリにおける機械学習システム基盤について

  • 機械学習システム基盤のコンセプト
    • メインアーキテクチャはkubernetes
    • 特定ベンダー非依存
    • ローカルと本番で同一実行環境
  • Architecture Overview
    • 写真参照
  • Workflow
    • 写真参照
  • 2018年以降の予定
    • 2-4モデルが稼働中
    • 精度を監視して更新する機構
    • OSSに向けて(予定)
  • プロジェクト体制は3-4名

Q&A

  • 画像検索による商品検索の精度の現状と短・中期的な達成度合いの見通し
    • 画像検索は直近1,2ヶ月であれば対応できるが、全画像は1億枚以上あり、対応がインフラ的にもアルゴリズム的にも困難
  • 論文の手法そのままではなく、メルカリ独自の工夫はある?
    • そこまで最新アルゴリズムは使っていない。Inception-v3はパラメータ数が少なかったり、クセがわかっているので使っている
  • アカデミアとの関わりは?
  • 機械学習プロジェクトをどう進めている?
    • ビジネスサイドとの軋轢。コミュニケーション。デモをすぐに作ってイメージ共有を行う
    • コミュニケーションのための事例集を作っておく
  • 画像検索の新カテゴリ対応の課題はある?
    • 特にしていない。ユーザから得られたデータ次第