Edited at

人の激少ないスタートアップで機械学習チームをつくる術


カヤック時代

カヤックではデニールと呼ばれておりました。

2014年に中途で入社し3年間iOA,Androidのエンジニアとして働いており、

今はTRUNKという教育と採用の会社を創業しCTOとして開発から経営までわちゃわちゃしてます。


なぜ機械学習チームが必要になったか

結論から言うと、物凄く必要というわけではありませんでした。

個人的に去年から今年の頭にかけて、東大の社会人向けのデータサイエンティスト講座を修了し、自社に活かそうとしていました。

機械学習を何に使えるか決まってないけど、スモールスタートでとにかくやってみようという感じでヌルっとはじめました。

参考: 東京大学グローバル消費インテリジェンス寄付講座


チーム集め

まずはチームです。そもそも弊社はフルタイムエンジニアが私含め2人なので、フルタイム社員はまず無理です。

そこで、インターンです。TRUNKは大学生向けのWEBとリアルの学習+採用サービスということもあり、自社サービスから探しました。(採用サービスやっててよかった。)

ということで集まったのが、情報系の学部で機械学習も少しやったことがある通称イトゥーとデータサイエンティストとしてインターンしてる通称ナゴヤボーイの2人を招集しました。

イトゥーはこの為に採用し、ナゴヤボーイは元からいたインターンです。

PM: わたし

エンジニア: イトゥー、ナゴヤボーイ


タイトルの自動生成プロジェクトはリリースまでいけず

まず最初に目をつけたのが、トレーニングタイトルの自動生成です。

現在TRUNKでは学生が集まりそうなタイトルを人間が圧倒的な感覚で決めてます。

参考: トレーニング一覧

これを機械が勝手に決めてくれたら社内の全員助かる!ということでこれに決めました。


技術的な話


サマリー


  • マルコフ連鎖

  • LSTMで文字の自動生成

ここらへんの技術に近いです。

【エヴァンゲリオン】アスカっぽいセリフをDeepLearningで自動生成してみる - Qiita


マルコフ連鎖


データセット

TRUNKの過去のトレーニングタイトル: 700件(重複をのぞく)


生成結果サンプル

- 今も現役バリバリ䛾おっさんエンジニア、デザイナー志望䛾学生向け

- ゴール䛾設定䛾しかたを勉強して体験!春休みにユーチューバーデビューしよう!
- フォトショップでトレーニング画像を使うと面白くなりそうなも䛾


LSTM


データセット

TRUNKの過去のトレーニングタイトル: 700件(重複をのぞく)

compassの過去のイベントタイトル: 5900件


生成結果サンプル

- lpを使ったスキル開発ツールを用い

- PyLadiesTokyoMeetup
- インターネットLTエンジニア社よ


精度が上がらず中止

ご覧の通り、結果としてできた文章は、実用レベルには達しませんでした。

このプロジェクトはここで終わりとしました。

詳しくはイトゥのスライドをどうぞ

kobachi presentation - Speaker Deck


学生のレコメンドモデルがリリースまでいけそう

次に目をつけたのが、レコメンドのモデルです。

TRUNKは企業の人事が学生のレジュメを見てスカウトを打ちます。

そこで、機械学習をつかったレコメンドモデルをつくり、よりスカウトを打ってもらおうというプロジェクトです。


技術的な話

過去にスカウトを打ったユーザーのレジュメにあるキャッチコピーを解析し、似たキャッチコピーのユーザーをレコメンドしようというものです。


サマリー


  • Doc2Vec

  • MeCab


Doc2Vec

Doc2Vecは任意の長さの文章をベクトル化する技術です。

学生のキャッチコピー、自己紹介を学習データにベクトルにし、類似度を出そうというものです。


Mecab

MeCabは日本語の形態素解析に使われるライブラリでキャッチコピーから動詞と名詞を取り出すのに使っています。

詳しくはイトゥのスライドをどうぞ

project yamcha phase 1 - Speaker Deck


キャッチコピーに対する類似度の結果

結果の一部をご覧ください。

※ 文章右側の数字は1.0が類似度MAX(同一文章)で、数字が1.0に近いほど類似度が高いです


ユーザーAのキャッチコピー: "人が少しでもポジティブに働ける社会創りに貢献する"

使命を全うする!!   0.337063

インド、ベトナムでエンジニア修行!泥臭さなら誰にも負けません! 0.301001
keep on 0.298875


ユーザBのキャッチコピー: "生きてるだけで丸儲け"

フットワーク  0.300182

好奇心旺盛のマイペース 0.296664
何でもやってみたい 0.274297


ユーザCのキャッチコピー: "誰とでもすぐ仲良くなれる怖いものなし大阪出身のたこやき娘"

食うか食われるかの人生送るサバンナ系女子大生  0.303465

星が出るエンジニア^_−☆ 0.287842
忍耐強いにっこりスマイル0円 0.285037

どうでしょうか、なんとなくわかる~ という感想だと思います。

ユーザーCの例に関してはたこやき娘サバンナ系女子大生という絶妙なチョイスに驚きです。

アルゴリズムにはない良い味だしてます。


プロダクトに導入への道

このモデルはまだムラがあるので、この機械学習のモデルとルールベースのアルゴリズムを組み合わせてレコメンドするよう現在開発中です。


気をつけた事=厳密なルールを決めた


  • 私は絶対にコードを書かない


  • 期日を設けて、その日のモデルの出来で次のステップに行くか判断し、それ以外では判断しない

  • インターンには問題を2人で努力しながら解決してもらう為、書籍はケチらない


まとめ


  • 適切な難易度の課題を見つけることが重要

  • アプリケーションのコードと違って正解があるようでないのでフィードバックしにくい

  • 前処理前と前処理後でデータの数が激減する

  • スタートアップでも実験ベースの開発をやろうと思えばできる

  • プラットフォームつくるの楽しい