BLOG

スマホアプリでお馴染みのLINEさんと、医療系向けに機械学習サービスを提供しているエムスリーさんのエンジニア向け機械学習系イベントにお邪魔してきました。

machine learning production pitch
https://line.connpass.com/event/120518/

機械学習系の技術イベントだと、アルゴリズムや手法にフォーカスした勉強会的なものが多い印象ですが、こちらのイベントは機械学習サービスの企画や運営、メンテナンスなんかを主なトピックにしようとしているようです。

1人目 呂彩林さん
LINEでは色んなサービスから解析に使っても大丈夫なデータのみData Lake Hadoopに格納する仕組みをもっていて、これをZ-FEATUREという機械学習モジュールに放り込んで各サービスから横断的に使えるようにしている。個人情報を含んでるので各サービス担当から特定の人に限定して閲覧利用している。また、データがスパースなので利用しやすいようにSCDVを使って文書ベクトルにしたY-FEATUREに変換して利用している。ほとんどのデータで次元を大幅に減らす事が出来るけど、データサイズは大きくなっちゃうみたい。様々なサービスを提供する強みが生きる仕組みが作られていて流石です。

2人目 エムスリー 西場正浩さん @m_nishiba
リンク予測をしてリコメンデーションするサービスについてのお話。まずGCMCの論文を紹介してから記事のリコメンデーションについて紹介。週に1回20件の記事から5個の記事を紹介するけど、既読記事は紹介しちゃいけない、という課題。学習データとテストデータはランダムじゃなく、一部のユーザーのみの基準日以降のデータをテストデータにしている。IDを入れなくてもLDA+categoryで充分予測が出来るので過去の選択傾向から似たユーザーの行動が予測できている。既存のデータがランキングモデルで提供して得られたデータなのでランキングモデルに勝てないけど、これはデータそのもののバイアスによるもの。一応確認の為にランキングモデルとMCMCでアンサンブルすると、ランキングモデルに勝てるようになったので、正式リリースではアンサンブル比率を変えながらABテストしていく予定とのこと。元々のデータのバイアスを考慮しつつリリース時にどうするかまで含めて作戦を考えられていてとても参考になります。

3人目 LINE 的場勇樹さん
LINEのAIアシスタントClovaの仕組みを紹介。NLU発話の文字列を受け取って対応するシステムはユーザーが何を言うか分からないので、長さやコンテキストが無限の組み合わせをもってしまい、アルゴリズムが複雑になるし開発の影響範囲が複雑でリリース前のチェックが超大変だった。そこで天気情報やメール送信などのドメインごとにNLUを分けて、どのドメインに割り振るかを初段で判定して各ドメイン用NLUにより詳しい対応を任せる事で微調整がやりやすくなった。モデルの更新はRekcurdを使っていてGUIから操作してモデルのみバージョン2、他をバージョン1にするなどをコンソールから操作するだけでKubernetisのローリングアップデートまでもっていけてめっちゃ便利そう。PDCA早く回そうという強い意思が感じられて素晴らしい。

4人目 エムスリー 河合俊典さん(ばんくしさん) @vaaaaanquish

資料スライドはこちら

医師の興味ワード抽出しての医師紹介、広告やコンテンツの出し分け、時系列分析で販促をやろうとしていて、医師に疾患/薬剤を紐づける作業からはじめている。データにはレコメンドやサービス内ポイントによる強いバイアスがあるのでそのまま扱っちゃダメ。しかも医師が本当は何に興味があるのかは分からないので評価関数の設計が必要だし、データは疎行列だから辛い。最終的にgraph modelを採用。graphはユーザー、記事、興味の3つの要素に分けてlabel propagationで学習。クレンジングでは全く活動がないユーザー、逆に全部読んでるユーザーは除き、ポイント目当てのユーザーはクリック間隔から推定して除外。元々の記事の数が多いジャンルがあるのでpage view baseでリコメンドを算出すると記事数が多いものが上位に来てしまうし、ユーザーのpage viewが少ないと上手く行きにくいのをTriRankを使うと概ね上手くいくらしい。


こういう実際のビジネスに機械学習を使っていく為の話は書籍では得られないので、すごく勉強になりました。主催運営のLINE、エムスリーの2社の皆様ありがとうございました!

勝間和代さんがオススメしていたAndroidスマートフォンをマイク替わりにしてPCに音声入力するというのをやってみました。wifi経由でローカルネットワーク内のPCにワイヤレスで伝送できるのがとても便利ですし、漢字変換の精度も高いのでかなりの効率化に繋がります。やり方をまとめますので皆さんも是非やってみてください。

手順は以下のとおり

1. Android用Voice Inputアプリをスマートフォンにインストールする
2. PC用Voice InputアプリをWindows PCにインストールする

3. PCのローカルIPアドレスを確認する
4. AndroidアプリにPCのローカルIPアドレスを登録する

5. PCのアプリを待機状態にしてAndroidアプリの音声認識を開始する


■■ 1. Android用Voice Inputアプリをスマートフォンにインストールする

このアプリは現状google playに登録されていない為、開発者のサイトからダウンロードしたapkファイルをファイルマネージャーなどを使ってインストールする事になります。インストールしたいAndroid端末で下のリンクを開くと画像のようなサイトが開きます。下の方にスクロールしていくと(Android最新版)と書かれたリンクがありますので、ここをタッチしてapkファイルをダウンロードします。

Voice Input配布ページ
http://www.asahi-net.or.jp/~tz2s-nsmr/VoiceInput/VoiceInput.html

上手くダウンロードできたらインストールします。Androidスマートフォンのファイルマネージャーでダウンロードフォルダ内にあるvoiceinput.apkを選んでインストールを実行します。

インストールする選択肢が現れない端末の場合は、インストール機能付きのファイルマネージャーをgoogle playなどからインストールしてから実行する事になります。僕はアストロファイルマネージャーを使いました。

アストロファイルマネージャー

https://play.google.com/store/apps/details?id=com.metago.astro&hl=ja


アストロファイルマネージャーアプリを開いてvoiceinput.apkファイルを選択すると「インストール」ボタンがありますので、これを押してインストールします。



■■ 2. PC用Voice InputアプリをWindows PCにダウンロードして解凍する


先ほどと同じ、voice inputのページに音声入力先に使いたいPCでアクセスしてPC版アプリをダウンロードします。先程よりももっと下までスクロールすると「4. Windows側のソフト」と書かれたところがありますので、ここからダウンロードしてきて解凍します。

voice input
http://www.asahi-net.or.jp/~tz2s-nsmr/VoiceInput/VoiceInput.html

解凍した「VoiceInput.exe」を実行するとタスクバーに常駐されてアイコンが表示されます。後で使いますので常駐したままにして進みましょう。



■■ 3. PCのローカルIPアドレスを確認する

Windowsシステムツールのコマンドプロンプトを開いて「ipconfig」とタイプしてENTERキーで実行します。スペルミスがなければ下の画像のようにズラッとネットの接続情報が表示されます。

IPv4アドレスの値をメモします。この場合「192.168.0.3」になります。



■■ 4. AndroidアプリにPCのローカルIPアドレスを登録する

緑色のアプリがvoice inputです。これを開きます。

開くと設定というボタンがあるのでこれをタッチします。するとIPアドレスを記入するところが出てきますので、先程メモしたIPアドレスを入力します。画像は「192.168.1.22」した例になりますが実際には自分のPCに表示されたIPを入力してください。もしかするとピリオド「.」が入力できない端末があるかもしれませんが、その場合は別のアプリでIPアドレスを入力した上でコピー&ペーストすると貼り付けは正常に動作します。ポート番号は任意の値を指定できるようですがここでは6500のままで進みます。


■■ 5. Androidアプリの音声認識を開始する

先程常駐させたPC側のアプリのアイコンを右クリックして設定メニューを開きます。

ポート番号を入力する欄がありますが、Androidアプリ側のポート番号を変更していないのでこちらはそのままでOKです。文字を入力するを選択してOKをクリックします。これでPC側の準備は完了です。

最後にAndroidアプリの「音声認識を開始する」ボタンを押したらAndroid側も準備OKです。

PC側のカーソルの位置にAndroidスマートフォンに話しかけた音声入力結果が出力されます。WebブラウザでもWordでも良いので書き出したいところにカーソルを合わせてAndroidスマートフォンに話しかけてみてください。入力した内容が書き出されたら成功です。



最後に)

ちなみに、この音声入力は長めの文章を入力した方が精度が高くなります。短い入力でもそれなりに上手く拾ってくれますが長く話した方が文脈を読んで、より正確な文章に直してくれますので、出来るだけ長めの文章で音声入力するようにしてみてください。


レッツトライ!