2019.08.20

AIサービス

TensorFlow、Chainer…機械学習に使うライブラリって?主要ライブラリまとめ!

最近では身近なサービスに機械学習を活用した画像解析や言語処理が導入されることが増え、ますますAIや機械学習が注目されていますね。これから機械学習をやってみようかなと思っている人も多いのではないでしょうか?

しかし、機械学習をこれから始めようと思っている人がよく疑問に思うことが、「どのライブラリを選べばいいの?」ということ。webサービスを作る時と同じように、機械学習にも多くのライブラリが用意されています。

今回は、それぞれのライブラリの紹介をしていきます。

1. どんな基準で機械学習ライブラリを選ぶべきか?

基本的には、「やりたいこと」から選ぶのが一番ですが、初学者の場合は「難易度」も考慮した二軸で選びましょう。
個人で学習する場合、大規模なシステムを扱うのは大変なので、最初は多くのデータは扱えないがシンプルで簡単なものを選ぶのが良いでしょう。
また、チュートリアルが充実している、サンプルデータセットが用意されている、なども重要な観点になります。
機械学習はデータの準備、データの前処理が非常に重要な要素となるため、そもそもデータを準備するのが難しくて挫折…とならないようにすることが大切です。

1-1. 機械学習でできること

では、実際にどんなことができるのでしょうか?
機械学習を活用すると、下記のようなことができます。

画像認識
自然言語処理
音声認識
データに基づいた予測
データ分析

上記はほんの一例ですが、ちょっとわかりにくいですね。実例でみてみましょう。

画像認識→画像を識別して、分類分けをしたり、何かしらの処理を施したりします。具体的には、このMicro Softの画像認識サービスのように、画像を解析してそこに写っているものがなんなのかの結果を返したり、人の顔写真からその人の性別、年齢を判断したりといった処理を行います。

自然言語処理→チャットボットといったら親しみやすいでしょうか。メッセージに書かれている文字を解析して意図を汲み取り、人を介さずともやりとりを行えるようにしたり、何かの外国語や方言のデータセットを作成して、そのセンテンスが何語なのか、どこの方言なのかを分類したりといったことが可能です。また、作家の書いた文章を学習させて、小説を生成させるというようなプロジェクトもあります。

音声認識→多くの人がお世話になっているであろうSiriやAlexaには音声認識が使われています。ロボットとの会話にも必要になる技術ですね。

データに基づいた予測→例えば過去の株価などをデータとして使用して株価予測を立てたり、物の価格の推移の予測を立てたりということも可能です。小売業や不動産業での活用もできますね。

データ分析→データを解析して、共通の結果や法則を導きだします。例えば、スーパーに来る顧客の行動や買い物の履歴から、抱き合わせ商品の提案をしたり、webページのレコメンド機能的なものに適用したりすることができます。

どうでしょうか?やりたいことはきまりましたか?

2. ライブラリ一覧

では早速ライブラリをみてみましょう。
全ては紹介できないので、よく使われているものをピックアップして解説してみました。

2-1. TensorFlow


TensorFlowはGoogleが2015年に開発した機械学習ライブラリです。
分散処理を行うことによって大量のデータをさばくことが可能になっているため、大規模案件まで幅広く使われている、代表的なライブラリです。
多くのOSに対応、iOSやAndroidにも対応しているので、モバイルに組み込みたい人も使うことができます。
Googleが開発していることもあり、GoogleがMLプラットフォームを提供しています。
もっともポピュラーなライブラリではありますが、性能が高く大規模なために個人で扱うのは難しいのでは、という点が欠点としてよく挙げられます、

顔認識、音声認識、画像認識、リアルタイム翻訳などに使用されており、PythonもしくはC++で動きます。

2-2. Chainer


Chainerは日本の機械学習系のベンチャー企業であるPreferred Networksが主導で開発を進めているオープンソースの機械学習ライブラリです。
日本企業が主導で開発を進めていることもあり、日本語チュートリアルも充実しています。
https://tutorials.chainer.org/ja/
公式では、高速な計算、柔軟な記法、直感的にネットワーク構築が可能、という点が推されています。
他のライブラリと比べて実行速度が遅いとも言われていましたが、開発が進んで少しずつ改良されているようです。
顔認識、音声認識、画像認識、線画自動着色などに活用でき、Pythonで動きます。

2-3. scikit-learn


scikit-learnはGoogle Summer of Codeというプロジェクトから始まったオープンソースライブラリで、今現在も活発に開発されている充実したライブラリです。
分類、回帰、次元削減、クラスタリングなどがメインの機能となっています。
データの学習手法が非常にシンプルで簡単に扱えるため、初心者向けのライブラリとしても有名です。手軽にできるため、ちょっと試してみたいときにスピード感持ってできるのがメリットでしょうか。
ディープラーニングやGPUサポートがないので、あまりに膨大なデータを処理となると少し厳しいですが、開発が活発な分ドキュメントが整備されており、初心者にも始めやすいのが特徴です。
画像認識、スパム検出、株価予測、顧客のセグメンテーションなどに活用でき、Pythonで動きます。

2-4. Keras


KerasはGoogleのエンジニアであるFrançois Cholletが中心となって開発されたニューラルネットワークライブラリです。
TensorFlow、CNTK、またはTheano上で実行できるようになっています。
公式サイトによると、Kerasは迅速な実験を可能にすることに重点を置いて開発されたそうで、とにかく人間にとって扱いやすいライブラリとして設計されています。
こちらもscikit-learnと同じように、手軽に扱えるという点で初学者でもやりやすいライブラリだと言えるでしょう。
ネットワークの記述が簡単、柔軟に書ける、コードが読みやすいなどの点が特徴として挙げられています。
画像認識、文章の自動生成、チャットボットの作成などに応用でき、Pythonで動きます。

2-5. MXNet


MXNetは、ワシントン大学とカーネギーメロン大学によって開発が進められたライブラリです。
AWS、Azureなどのクラウド上で動かせるのも強みの1つです。
スケーラブル、フレキシブル、ポータブル、マルチランゲージが特徴として挙げられているように、拡張効率の良いライブラリとなっており、対応言語はR、Python、Scala、Java、Go、C++、Juliaなど他のライブラリと比べて段違いに多いのが最大の特徴です。
Pythonはやったことないけど機械学習をやりたいという人にぴったりですね!

2017年にはApache Incubatorに加わっており、オープンソースライブラリとしてこれからも活発な開発が進められることが期待できます。

3. まとめ

使ってみたいライブラリは見つかりましたか?
2019年後半はぜひ機械学習を始めてみましょう!

4. AI開発をするならバイタリフィへ

「自社サービスにAIを導入したい」「AIを導入し自社の効率化・コスト課題を改善したい」
という企業様はバイタリフィバイタリフィアアジアへお気軽にご相談ください。

「業務へのAI導入を検討しているが、何からすれば良いんだろう?」
  そんな事業戦略担当者様!
  機械学習、ディープラーニングを用いてAIモデルを無料で作成。
  AIアプリを気軽に開発できるサービス『Mobile AI Lab』のお問合わせはこちら