はじめまして!
ピクスタでエンジニアをしている id:necojackarc です!
本日はピクスタでどのように機械学習を取り入れているかを簡単にお話したいと思います。
はじめに
ピクスタで販売している素材には、タグと呼ばれる情報が付与されています。 基本的にタグ付けは、素材の販売審査申請時にクリエイターさん本人が行っています。
検索結果から実際にタグの情報を確認してみます。
検索結果から画面をクリックすると「カパッ」*1と画像の詳細が表示されます。 すると、中段の右側あたりに「タグ」という項目が出てきます。 しかし、ここに表示されているタグはほんの一部です!
全てのタグを見るには「もっと見る」*2をクリックし、素材詳細画面へ移動します。
実際にクリックして移動後、一番下までスクロールすると、
タグ情報が閲覧できます!
たくさんタグが付いていますね。 各素材には多いもので50個程度のタグが付けられています。
この素材のタグ情報は、ピクスタのサービスにおいて、非常に重要なデータです。
タグ情報を用いて検索インデックスが構築されているため、タグ情報に問題があると素材の検索結果にダイレクトに影響が出てしまい、サービスの品質に大きく影響が出てしまいます。
例えば、非常に素晴らしい素材がピクスタにあったとします。しかし、その素材のタグ情報に問題があると、購入者の方が検索からその素材にたどり着くことは困難になってしまいます。
これは、その素晴らしい素材を販売したいクリエイターさんはもちろん、素材を探している購入者の方々や、私達ピクスタも望んでいない、Lose - Lose - Lose な状況*3です。
このように、素材のタグ情報はピクスタのサービスにおいて非常に重要なファクターです。
機械学習のタグ情報翻訳への応用
海外展開における問題
ピクスタでは海外展開を推し進めていますが、その際に重要になるもののひとつが、先ほど挙げたタグ情報です。
海外展開の成功において、進出先の言語でピクスタの素材が検索できることは必須要件です。 どれだけ良い素材があったとしても、それを欲しいと思っている人に届かない限り、その価値は活かされません。
しかし、素材のタグ情報は基本的にクリエイターさんの母国語でしか付けられていません。
そこで必要になるのが、各素材のタグ情報の翻訳作業です。
翻訳と言っても、単に辞書的に翻訳するだけでは大きな問題が発生します。 例えば「タイ」という単語を英語に翻訳しようとすると、「sea bream (魚のタイ)」「Thailand (国のタイ)」「tie (ネクタイ)」という大まかに3つの翻訳候補が考えられます。
繰り返しますが、タグ情報はピクスタのサービスにおいてキーとなる情報であるため、これをそのまま辞書的に翻訳するわけには行きません。
各素材の種類に応じた、適切な訳語を選択する必要があります。
そこで、ピクスタでは機械学習を応用したタグの訳し分けに挑戦しています。
機械学習によるタグの翻訳
タグの翻訳候補をカテゴリ、素材に付いている他のタグをテキストとみなせば、タグ翻訳の問題はいわゆる「テキスト分類 (Text Classification, Text Categorization) 」という、一般的な機械学習、自然言語処理の問題として捉えることができます。
具体的に先ほどの「タイ」で考えると、
カテゴリ: sea bream / Thailand / tie
テキスト: 素材に付いている他のタグ
となります。
すると、スパムメールなどの判定や、メールに対する自動ラベリングなどと同様に扱うことができます。
しかし、まだまだ精度の問題であったり、速度の問題であったりと、課題は多く残されています。
精度向上・高速化検証
現在、教師あり学習 (Supervised Learning) の手法のひとつを採用していますが、この手法による精度向上には、質の高い学習データもまた必要不可欠です。
そこで、いかにして質の高い学習データを多く集めるかという検証を行いました。
また、学習データを永続化するため、MySQL を利用していたのですが、ここが大きなボトルネックであることが判明しました。
検証の結果、NoSQL のひとつである DynamoDB、マルチプロセスやマルチスレッドを用いた並列・並行プログラミング、メッセージキューサービスを利用した分散コンピューティングなどを採用すると、タグの翻訳(分類)速度が飛躍的に向上する可能性があることがわかりました。
これらの検証内容については、後日機会があれば詳しく書きたいと思います。
ピクスタで挑戦できること
ピクスタには非常に多くの写真、イラスト、映像素材が揃っています。
画像の自動分類およびタグの自動設定など、挑戦できるテーマは非常に豊富です!
もし、この国内最大級の写真・イラスト・映像素材マーケットプレイスで、機械学習・データ分析の力を存分に発揮したいという方が居られましたら、いつでもお待ちしております!
機械学習勉強会
ピクスタのエンジニアには、大学・大学院で機械学習を専攻していた方も居るのですが、体系的に機械学習について学んだことがある方は極少数です。
しかし、機械学習に興味を持っている人は私を含め、そこそこな人数が居ます。 さらに、私が個人で開催している Haskell 勉強会*4のメンバーにも、機械学習に興味を持っている人が多く居ます。
そこで、そのメンバーと共同で、ピクスタの会議室を使って隔週で機械学習勉強会を開催することになりました!やっほい!
まずは、はじめてのパターン認識の読書会を行います。
初回は今週 8/7 (金) 19:30 から行う予定です。
参加予定メンバーは現時点で5人、多くても10人に満たないかと思います。 そのうち、ピクスタ以外のメンバーは今のところ3人です。
もし一緒にはじめてのパターン認識を読んでみたいという方が居られましたら、以下の連絡先にご連絡ください!一緒によちよち読み進めましょう。
連絡先
- メールアドレス (ブログ担当): texta@pixta.co.jp
- 採用ページ (エンジニア): https://pixta.co.jp/recruit/wanted#webeng
- 〒150-0002 東京都渋谷区渋谷3-11-11 IVYイーストビル9F(受付3F)
おわりに
今回はピクスタでの機械学習の取り組みについて、簡単ですがご紹介いたしました。 拙い文章だったかと思いますが、最後まで読んで下さりありがとうございます。
ピクスタエンジニアブログ「てくすた」では、ピクスタに関するテクニカルな情報や、テクニカルとは全く無縁の面白おかしい情報もガンガン発信して行きますので、これからどうぞよろしくお願い申し上げます!