人工知能を用いたサービスに必要な7つ道具

人工知能を用いたサービスに必要な7つ道具
2017年10月2日 mfb

2017/10/02
株式会社エス・エム・エス・データテック
事業開発室 広報

人工知能エンジンを導入するために

昨今のITインフラ整備により企業には何らかのデータが溜まっているということが多々あります。「そのデータを用いてAIシステムを作りたい」と思った時に、どのような手法を用いて作成していくのでしょうか??本記事では作成実績のあるマッチングエンジンを例に解説していきます。

マッチングエンジンとは何か?を簡単に説明すると、「任意の入力に対して適切な出力を行う計算器のこと」と、捉えていただけるとよいでしょう。例えば、任意の案件に対して、適切な人材を紹介する等の業務はマッチングエンジンで自動化出来る可能性があります。

実際にマッチングエンジンを作成するための機械学習の手法は多く存在し、データの形式やエンジン作成の目的によって、適切な手法を選択する必要があります。また、生のデータには、学習を行う上での様々な不都合を抱えている場合が多く、これらを確実に取り除く必要があります。基本的には、マッチングエンジンの実装にあたっては、以下の2つのフェーズを必要とします。

① データを機械学習に適用できるような形に変換する「データの前処理」
② 前処理を行ったデータに対して行う「マッチングエンジンの実装」

以下では、これらのフェーズで使用する基本的な手法について、詳しく解説をしていきます。

①データの前処理における手法

存在するデータには多くの場合、データの形式がバラバラ(質的・量的データの混在等)、欠損値が存在、などの問題が存在します。このようなデータをそのまま用いて、マッチングエンジンを作ろうと試みても、データの学習が進まなかったり、そもそも学習が行えないなどの不都合が生じることがほとんどです。
そこで、データの学習の前に必ず行うのが、データの前処理です。ここでは、データをニューラルネットワークなどの機械学習手法を用いて学習させる前に行う、一般的な前処理について紹介します。

1.欠損値処理

用いる機械学習の手法によっては、欠損したデータを無視して学習を行うことが出来ますが、ほとんどの場合は不可能です。そこで、多くの場合、何らかの方法で欠損値の補完を行います。補完の方法でよく使われるのは、次のような方法です。

①平均値で補完する
②0で補完する
③データセットの中から似ているデータを選び、そのデータの値で補完する

また、欠損のあるデータを丸ごと削除するという手法を取ることもありますが、これは学習に用いるデータ数が減少するという大きなデメリットを伴います。

2.データの数値化

例えば、人材のデータであれば性別、企業のデータであれば業種など、あらゆるデータには質的データを含む場合がほとんどです。ニューラルネットワークなどの機械学習手法に用いるデータは、数値でなければなりません。そこで、質的データの数値化を行いデータを数値に統一することで、学習に適用できる形にします。数値化の手法はデータの形式によって異なりますが、例えば前述の性別や業種のようなカテゴリーデータであれば、カテゴリーの値別にカラムを分けて、該当するカテゴリーの場所を1とし、その他のカテゴリーを0にするといったようなデータのフラグ化を行うことが多いです。

また、人の書いた文章など、通常の方法ではまず数値化が不可能なデータについては、後述の「分かち書き」を行ったうえで、自然言語処理系の機械学習手法を適用し、文章データをベクトルにするなどの手法を取ります。

3.分かち書き

自然言語処理の前処理として有名な方法です。あらかじめ用意された「辞書」を用いて、文章データを単語ごとに分割します。また、「名詞が続いた場合は一つの単語としてみる」など、状況によって独自のルールでの分かち書きを行うこともあります。分かち書きを行ったデータは、時系列データを扱う「リカレントニューラルネットワーク(RNN)」や、自然言語処理ツールの「Word2vec」に適用することが出来ます。

▲文章を決められた単語ベースで分割

4.標準化

データを目的とするスケールに変換する際に使用する手法です。例えば、ニューラルネットワークでは、出力値を下記のロジスティック関数と呼ばれる関数に適用することが多くあります(下式のxに出力値を代入します)。

上記のグラフを見てみるとわかるように、適用するデータがおおむね2以上、もしくは-2以下であるとき、適用後の出力はそれぞれ1、0でほぼ一定となります。このため、2以上、もしくは-2以下の出力値はすべてがほぼ同じものとして扱われてしまいます。何も処理を加えてないデータでは、このような状況に陥ってしまうものが多いということが容易に想像できるかと思います(例えば、企業の社員数など)。
そこで行うのが、データの標準化です。標準化にも様々な方法が存在しますが、最も有名なものは、平均との差分を標準偏差で割った値に変換する「z-スコア」と呼ばれる手法です。これを適用することで、全ての数値データを平均0、標準偏差1の分布に変換することができます。
また、前述のロジスティック関数以外にも、様々な関数(一般に「活性化関数」と呼ばれる)に出力を適用する場合があるので、そのとき用いる活性化関数に合わせた標準化を行う必要があります。

②マッチングエンジンの実装における手法

前述のデータの前処理が完了したら、いよいよ機械学習によりエンジンの実装を行います。マッチングエンジンの実装には、データの種類や出力として得たい結果の種類によって適切な手法を選択する必要があります。ここでは、回帰をはじめとするその代表的な手法について紹介したいと思います。

5.回帰分析

各入力変数に重みをつけて、スコアを計算するという手法です。シンプルな重回帰はもちろん、ニューラルネットワーク型の回帰を行うことも可能です。基本的には、「勾配降下法」と呼ばれる微分の応用を用いた手法により、重みを適切な値に更新していくことにより、学習を進めていきます。
例えば、ある企業とある人材のマッチング度合いを計算するシステムを作成したい場合は、
①学習用データとして、企業と人材のマッチングを行った履歴データを用意する
②企業と人材の各データを入力データ、マッチングの結果を教師データとする
③ネットワークのモデルを作成し、勾配降下法により適切な重みを求めていく
といった手順を取ります。

▲3次関数による回帰分析でフィッティングした例

6.自然言語処理

履歴書などの文章データに対しては、自然言語処理が有効です。分かち書き処理により、文章を単語ごとに区切ったうえで「Word2vec」などのツールを活用して単語ごとのベクトルデータを作成します。そして、その結果を用いて文章のベクトルを算出します。このような手法を用いることにより、例えばある人材の履歴書本文のベクトルを作成し、そのベクトルにマッチする企業を探す、などのマッチングを行うことが出来ます。

▲「単語」のベクトル化の例

7.クラスタリング

「k-平均法」などをはじめとするとする機械学習手法を用いることにより、全データを、部分集合ごとに分けて、各部分集合が一定の特徴を持つような分割を行う技術です。例えば、人材データと企業データで別々にクラスタリングを行い、「どのクラスターに属する企業と人材同士が強くマッチしているか」などを分析することにより、過去のデータをもとにした両者のマッチングを行うことが可能です。

▲データをクラスタリング(グループ分け)した例

おわりに

機械学習の技術面をもう少し知りたいという方におすすめの図書はこちらです。

 

▲ITエンジニアのための機械学習理論入門/中井悦司

技術的な側面に興味はあるが、学習に壁を感じている方へ入門書としてお使いいただけます。中は、目的・現状・方法を丁寧な日本語で説明していてプログラムを書くというよりは理解を促してくれる本になっています。一冊読み切ったときには機械学習の基本的な発想が身についていることでしょう。

今回上げた各々の知識をを数学的な構造実装の両面から押さえておくと他分野への応用に役立ちます。
充実したAIライフをお過ごしくだい!