プログラミング

2019/06/17

機械学習ライブラリ・ディープラーニングフレームワークおすすめ15選:特徴・便利な点・利用方法など

機械学習ライブラリ・ディープラーニングフレームワーク15選

機械学習・ディープラーニングなどAI技術を身近にしたものにライブラリ・フレームワークがあります。機械学習系の実務でもライブラリを使用するケースは多く、ITエンジニアなどプログラミング経験者が初めて機械学習(Machine Learning)/ディープラーニング(Deep Learning)を学ぶ際には、まずはライブラリを使用し簡単なコードを書いてみることもおすすめです。

ただし、ライブラリ・フレームワークは万能ではありません。実現したい内容に応じてどのライブラリを使用するか選択する必要がありますし、ライブラリが手助けしてくれる部分のほかは開発が必要です。

また、機械学習に利用できるライブラリやフレームワークは豊富にあるため、それぞれの特徴やメリット・デメリットについて俯瞰して知りたいという方も多いのではないでしょうか。

  • そもそもライブラリやフレームワークってなんなの?
  • それぞれのライブラリで得意なことってあるの?
  • どのライブラリが使いやすいの?
  • 現場で使われている実用的なライブラリを知りたい

そのような疑問を解決するために、今回の記事では、現役エンジニアが頻繁に使っているおすすめのライブラリ・フレームワークを掘り下げて解説します。機械学習とディープラーニングそれぞれの分野で厳選した15個について詳しくみていきましょう。

<厳選!ライブラリ・フレームワーク一覧>
機械学習

NumPy(ナンパイ) Pandas(パンダス) SciPy(サイパイ) Matplotlib(マットプロットリブ) scikit-learn(サイキット・ラーン) dlib(ディーリブ)

ディープラーニング

TensorFlow(テンソルフロー) Keras(ケラス) Chainer(チェイナー) Pytorch(パイトーチ) MXNet(エムエックスネット) Deeplearning4j(DL4j) Microsoft Cognitive Toolkit(マイクロソフトコグニティブツールキット) PaddlePaddle(パドルパドル) Caffe(カフェ)

とその前に、ライブラリについて、簡単に説明します。

ライブラリとは、特定の処理を再利用するためにきりだされたプログラムの一部です。なにか処理を行う時に、自分で0から全部の処理をかかなくても、ライブラリをつかえば簡単に特定の処理を行うことができます。 自分が書けない複雑な処理もライブラリをうまく活用すれば、簡単に実装することも可能です。

OSS(オープンソースソフトウェア)として無料で配布されているものも多く、ソースコードを改変して自身のプロダクトに取り込むこともできます。そのように、ライブラリを使うと、機械学習のコアな部分を一からコーディングする必要がなくとても便利です。

では、さっそくそんな便利なライブラリについて、それぞれ学んでいきましょう。

機械学習のライブラリ・フレームワーク

まずは機械学習(Machine Learningマシンラーニング)で使用できるライブラリを確認していきましょう。特徴、便利な点、利用シーンなどのおすすめを紹介します。

NumPy(ナンパイ)

NumPyの特徴

NumPyとは、数値計算を行うための定番ライブラリの1つで、「ナンパイ」または「ナムパイ」と読みます。

NumPyは機械学習だけでなく、多言語配列や画像処理・音声処理にも活用できる利用頻度の高いライブラリなので、Pythonを学習する際に合わせてこのライブラリを習得しておきましょう。

NumPyは、数値計算を得意とするライブラリですが、後ほどご紹介するSciPyを追加する事で、さらに高度な科学計算を処理することができます。

NumPyの便利な点

NumPyは数値計算の中で、特に配列処理能力に優れています。Pythonでも計算することは可能ですが、インタプリタ型のプログラミング言語のため、実行速度が遅く、処理に時間がかかります。NumPyはC言語やFortranといったコンパイル型言語で実装されているため、処理速度が高速です。 Python本体と、Pythonでよく利用されるライブラリをセットにしたパッケージである「Anaconda」に標準搭載されています。

またデータ分析において、データを受け渡すためのデータコンテナとしての役割もあります。 NumPy.にC言語呼び出しのAPIがある事で、NumPyから外部ライブラリへデータを受け渡すことができたり、逆に外部ライブラリの計算結果をNumPyに戻すことができます。この機能によって、NumPyは既存ライブラリを簡単に呼び出せる、動的インターフェースとしての役割を担っています。

NumPyの利用シーン

NumPyは、ベクトルや行列といった多次元配列をPythonより早く効率的に処理する必要があるプログラムで利用されています。

またNumPyは大規模のデータ処理に優れているだけではなく、他ライブラリと連結することがあります。例えば「Pandas」「SciPy」「Scikit-learn」といったライブラリと連結して使用することが実際の業務で多数発生します。機械学習の世界では、かなり高い確率で使うことになるライブラリなので、NumPyの配列指向の計算手法を知っておくことで他ライブラリを活用する時の強力な武器になります。

Pandas(パンダス)

Pandasの特徴

Pandasは、数表および時系列のデータ操作やデータ構造を変更するなど、テーブルデータを取り扱えるようにするライブラリで、「パンダス」または「パンダズ」、「パンダ」とも読みます。 機械学習において、大量のデータをAIに学習させますが、最終的なモデル精度をより高めるためには、不要なデータを取り除き、必要なデータを精査する前処理をする必要があります。 Pandasはその前処理の際に、データセット処理を効率化するために使用する機械学習エンジニアに必須となりつつあるライブラリです。

Pythonとよく比較されるプロブラミング言語に、R言語があります。 R言語は、統計分析に特化したプログラミング言語で、ベクトル処理やデータ分析、グラフによる可視化ができます。 こういった統計分析をPythonで可能するために利用されるライブラリがPandasです。

また、Pandas は重要なコードをC言語で実装しているため、NumPy同様、高速に処理することが可能です。

Pandasの便利な点

Pandasは、NumPyで作成されたデータの加工や入出力が可能です。数値以外のデータ処理を行う場合にPandasを使うと便利です。SQLと似た操作でデータ加工が行えるためデータベースを触っている人は使いやすいです。また、値に対するラベル付けを簡単に行えるため、機械学習の前処理などの工程を効率的に行うことができます。

Numpyと同じく、Pythonパッケージである「Anaconda」に搭載されています。

合計や平均だけでなく、分散や標準偏差といった機械学習において必須となる統計量も簡単に処理できます。 また、機械学習でよく行われる特定条件のデータを除外する処理も、SQLを書くように記述できます。

他にもソート、欠損値の補完、グラフの描画等、テーブルデータを取り扱う上で必須のメソッドを多く備えています。

Pandasの利用シーン

Pandasは一般的な表計算から、統計量の算出、データ整形、csv等のさまざまなフォーマットでの入出力といった、テーブルデータを扱う場合に、その豊富な機能面から利用されるデータ分析に必須のライブラリです。

またPandasは金融データを取り扱うために最も適した時系列分析機能をもっているため、金融データ分析アプリケーションにも利用されています。これはもともと投資銀行に勤めていた人によって作られたからかもしれませんね。

そのほかには、機械学習でデータ分析を行う前処理であるデータの読み込みやクリーニングといった作業でよく利用されています。 実際の業務でも、Pandasで書かれた前処理のスクリプトを渡されることは多々あるため、1つでも多くの機能の使い方を、実際に触って知っておくことをおすすめします。

SciPy(サイパイ)

SciPyの特徴

SciPyは、信号処理や統計などの科学計算用のライブラリです。語源は Science + Python に由来しており、日本語では「サイパイ」と呼びます。 SciPyではNumpyで行える配列や行列の演算はもちろん、さらに信号処理や統計といった計算ができるライブラリです。 NumPyよりも高度な数値計算処理を行う場合は、SciPyを利用するイメージです。

SciPyの便利な点

SciPyは統計、最適化、補完、積分、線形代数、フーリエ変換、信号処理、画像処理、遺伝的アルゴリズム、ODEソルバ、特殊関数といった、高度な科学技術計算処理をPythonを使って実行可能にします。科学計算領域における一般的な問題に取り組めるパッケージ群となっており、各パッケージによって得意な処理は変わってきます。こちらは後ほど、いくつか例をご紹介いたします。

このライブラリもNumpyやPandasと同様に「Anaconda」に搭載されています。

SciPyの利用シーン

例えば、下記のような計算処理を行いたい場合に、SciPyを利用します。 SciPyは主に特定の作業向けのパッケージから構成されており、それぞれで得意とする科学技術計算があります。

cluster:階層的クラスタリング、ベクトル量子化、K平均 fftpack: 離散フーリエ変換 integrate:数値積分ルーチン、微分方程式ソルバ linalg:線形代数ルーチン io:データ入出力 maxentropy:エントロピー分布処理 ndimagemisc:画像処理 sparsemisc:疎行列処理 stats:統計処理、離散分布、連続分布 signal:信号処理ツール stsci:画像配列操作 weave:PythonにC言語やC++言語を組み込む処理

Matplotlib(マットプロットリブ)

Matplotlibの特徴

Matplotlibは、データをグラフや画像データとして表示することができるブラフ描画のためのライブラリで、「マットプロットリブ」と読みます。

機械学習では、統計量の可視化や学習経過のグラフ化、画像の出力等の機能が多く利用されています。 ヒストグラムや散布図を描いたり、JavaScriptを利用してインタラクティブなグラフを生成することも可能です。

Pandasでもデータの可視化は可能ですが、Matplotlibを利用する事で更に複雑な表示が可能です。

Matplotlibの便利な点

Matplotlibは、出版用にも使えるほど高品質なグラフを作成することができます。そのため画像をPDFやJPEG、GIF等であらゆる形式でエクスポートできます。こちらも「Anaconda」にも標準搭載されています。

Matplotlibの利用シーン

Matplotlibは、NumPyなど他ライブラリで前処理したデータを可視化する場合によく使われる最も一般的なPythonライブラリです。 データを可視化する事で、異常値の検出や必要データの変形を発見することができるため、データ分析の現場ではよく使われています。 機械学習でも、NumPyやPandasと組み合わせ、分析対象のデータにどんな傾向があるのかグラフで表示したり、スコアの変化を描画する等、データを図表で表示させる際に活用するため、覚えておいて損はないでしょう。

scikit-learn(サイキット・ラーン)

scikit-learnの特徴

scikit-learnは、機械学習全般のアルゴリズムが実装された機械学習の基盤となっている大人気のライブラリで「サイキット・ラーン」と読みます。 統計学、パターン認識、データ解析の技法が豊富に使うことができるので、特に研究者の間で人気があります。

他のNumPyやSciPy、matplotlibと比較してもscikit-learnは、様々な機械学習の実装を簡単に試すことができます。

scikit-learnの便利な点

scikit-learnを使用することで、機械学習全般のアルゴリズムを簡単に実装できます。ただしどのアルゴリズムを選ぶべきか検討する際に、チートシートが参考になります。データの状況に応じで細かく分岐されたチートシートを活用する事でアルゴリズム選択が容易になります。 こちらのライブラリも「Anaconda」に標準搭載されています。

scikit-learnの利用シーン

scikit-learnは、機械学習全般のアルゴリズムが実装された機械学習の基盤となっている大人気のライブラリで「サイキット・ラーン」と読みます。 統計学、パターン認識、データ解析の技法が豊富に使うことができるので、特に研究者の間で人気があります。

他のNumPyやSciPy、matplotlibと比較してもscikit-learnは、様々な機械学習の実装を簡単に試すことができます。

scikit-learnの便利な点

scikit-learnを使用することで、機械学習全般のアルゴリズムを簡単に実装できます。ただしどのアルゴリズムを選ぶべきか検討する際に、チートシートが参考になります。データの状況に応じで細かく分岐されたチートシートを活用する事でアルゴリズム選択が容易になります。 こちらのライブラリも「Anaconda」に標準搭載されています。

scikit-learnの利用シーン

scikit-learnは、主に分類・回帰・クラスタリング・次元削減という4つの目的に応じて利用されます。 目的と状況に応じてアルゴリズムが決定されて、機械学習を進めていくことになるので、この4つの目的については簡単にどういったものか説明いたします。 分類とは、ラベルとデータを学習し、ラベルがわからないデータにラベルを付けることです。 例えば、身長体重とシワの数から性別を識別するというようなことに使われるイメージです。 回帰とは、数値をデータで学習し、その学習モデルを利用して、数値を予測することです。 例えば、身長体重かとシワの数から年齢を予測するといったことに使われるイメージです。 クラスタリングとは、漠然としたデータから近しい特徴を見つけて分類し、その学習モデルを利用して、同じようなデータからグループを見つけ分類することです。 例えば、星を光の強さや大きさ、色、距離、温度といったいくつかの特徴をもとにグループに分類するときに使われるイメージです。 次元削減とは、 データの次元を削減しデータの可視化、圧縮化を行うことです。 イメージでいうと、3次元である現実世界から写真を撮ることで2次元に落とし込み、状況を判断するようなことをデータでも行うという感じです。

dlib(ディーリブ)

dlibの特徴

dlibは、高性能な顔の器官検出(Face Alignment)が手軽に利用できることで知られているC++のライブラリです。日本語で「ディーリブ」と読みます。

顔器官検出は、目・鼻・口などの位置を得ることで、表情や、まばたき、口の動きなどを知ることに使われます。 人物の顔認証を行う際には必須の機能として知られています。

またdlibはロボット工学、組み込みデバイス、携帯電話、巨大なハイパフォーマンスコンピューティング環境など、産業・アカデミック分野を問わず幅広い分野で利用されている、オープンソースで、無料のライブラリです。

dlibの便利な点

dlibは、顔認識と顔の特徴点を検出する精度が高いということが挙げられます。 そのため、顔認識が必要な場合には必須のライブラリとなっています。 顔画像を検出したあと、別のライブラリで顔画像の識別器を作って、機械学習させるといったことも可能です。

dlibの利用シーン

ロボット、組み込み機器、携帯電話、大規模な高性能コンピューティング環境など、幅広い分野の業界および学術界で使用されています。 また、ニューラルネットワーク、SVRなどの機械学習、画像処理、ベイジアンネットワークなど計算、機械学習系のサポートとしても活用されています。

ディープラーニングのライブラリ・フレームワーク

ここからは、深層学習(Deep Learningディープラーニング)で使えるライブラリやフレームワークについて、学んでいきましょう。特徴、便利な点、利用シーンなどのおすすめを紹介します。

TensorFlow(テンソルフロー)

TensorFlowの特徴

TensorFlowは、Googleが「Google Brain」というプロジェクトのもとで開発を行っているニューラルネットワークの最新ライブラリで、「テンソルフロー」または「テンサーフロー」と読みます。 ニューラルネットーワークとは、人間の脳を再現した仕組みで、現在もっとも注目されている分野です。

ライブラリの内部はおよそC++で作られていていますが、Pyhonも含まれており柔軟に使用できる構造になっています。

ハイレベルな機能を実装可能で、計算をデータフローやグラフで表すことができまるため、実践で、複雑な問題に対処できる非常に役立つライブラリです。

TensorFlowの便利な点

TensorFlowの便利な点としては、異なるデバイス、システム上で、ほとんど変更なしに実行が可能な点です。

その他には、TensorFlowは、AI開発を行う上で、便利なドキュメントやチュートリアルが多く公開されています。 TensorFlowには、利用者同士で問題を解決し合うコミュニティも存在し、活発に活動しているため、実装で困ったときにもコードを提出して解決案を求めることができるため、行き詰まったときにもそれほど困りません。

TnesorFlowの利用シーン

TensorFlowはGoogleが開発したということもあり、Googleの音声検索や言語翻訳、画像検索に使用しています。 また検索エンジンのアルゴリズムの一つである、RankBrainにも使用されています。

その他には、監視カメラを使った顔認識システムに使われています。監視カメラに映った画像から顔を識別し、顔写真が多数登録されているデータベースを参照することで、監視カメラに映った人物を識別できます。 これにより、特定の人物を世界中の監視カメラから探し出すことができるため、防犯や捜査に活用されています。

自動運転分野でも使用されており、今後ますます活躍の幅を広げていきそうですね。

Keras(ケラス)

Kerasの特徴

Kerasとは、Pythonで書かれたニューラルネットワークのライブラリで、「ケラス」と読みます。

Kerasは、TensorFlowやTheanoといった他のディープラーニングのライブラリ上部で動くような作りになっており、より簡単に深層学習のネットワークを作ることができるよう設計されています。

人間にとって分かりやすい設計のため、初心者でも簡単に迅速なプロトタイピングが可能となっています。 Kerasを使えば、誰でもすぐにディープラーニングができるといえるほど簡単なので初心者にやさしいライブラリといえます。

Kerasの便利な点

Kerasを利用すると深層学習の背後にある数学的な部分を新規にゼロから開発し、実装しなくても、各層で利用するアルゴリズムとパラメータを指定するという比較的短いコードで目的のネットワークを表現する事が可能になります。

そのため、研究領域において非常に流れが早く、企業等でも素早く最新の実装が求められる深層学習の分野において、Kerasを使うことで最新手法を素早く試す事ができるという利点があります。

また、Kerasは、日本語化されたドキュメントがあるため、日本人にとってはありがたいポイントです。

Kerasの利用シーン

Kerasは、どんなときに利用すればいいのでしょうか。

公式サイトでは、下記のように定義されています。

次のような場合で深層学習ライブラリが必要なら,Kerasを使用してください。

  1. 容易に素早くプロトタイプの作成が可能(ユーザーフレンドリー,モジュール性,および拡張性による)
  2. CNNとRNNの両方,およびこれらの2つの組み合わせをサポート
  3. CPUとGPU上でシームレスな動作

Kerasを利用することで、簡単にニュートラルネットワークが構築できるため、何かを試すときには、最適ということでしょう。 最新の手法を実験的に試すときには、積極的に利用したいライブラリですね。

Chainer (チェイナー)

Chainerの特徴

Chainerは、日本のベンチャー企業「Preferred Networks(PFN プリファード・ネットワークス)」が開発した、日本人エンジニアに大人気のニュートラルネットワークを実装するためのライブラリです。「チェイナー」と読みます。

ディープラーニングに必要な複雑なニューラルネットワークの構築をPythonで簡単に書けるため、主に深層学習の分野で用いられています。

Tensorflowと異なり動的に計算グラフを構築しているので、学習途中でネットワークの形が変わるニューラルネットワークでも簡単に記述できる点が強力なライブラリです。

Chainerの便利な点

Chainerは、記法が直感的かつシンプルなので、単純なネットワークから、複雑なディープラーニングまで幅広く対応できる点が便利なポイントです。 またChainerは、インストールが簡単という利点もあります。 その他にも、国産のフレームワークのため、わからないことがあった時に、インターネットで調べれば日本語の情報がたくさん見つかりますし、バグの修正や最新技術への対応も頻繁に行われており、学習しやすさは抜群です。

Chainerの利用シーン

Chainerはあくまで深層学習のプログラムを実装する際に使用できるフレームワークです。 そのため、深層学習に関連する画像分類や、物体検出などで利用されています。 Chainer開発元のPFNがPaintsChainerという線画自動着色サービスを提供していますが、こちらでもChainerが使用されています。 これは、白黒等で描かれた線画ファイルをアップロードすると、自動的に着色された画像をダウンロードできるというサービスです。

Pytorch(パイトーチ)

Pytorchの特徴

Pytorchは、自然言語処理で利用される機械学習ライブラリTorchを元に作られたディープラーニングフレームワークです。「パイトーチ」と読みます。Facebookの人工知能研究グループが初期に開発を行いました。 ChainerやNumpyと似たような構文で操作できるため、使いやすいライブラリです。計算速度も早く、ソースコードが見やすく扱いやすいと近年人気が急上昇しています。

PyTorchは2016年後半に発表された比較的新しいライブラリで、他の機械学習ライブラリと比較しても後発組です。 それにも関わらず初期リリースされた2016年から人気を着実に伸ばしています。

Pytorchの便利な点

Pytorchが便利な点は、Chainerと比較したときに、実装されていない機能を追加する場合に、Chainerでは、微分のコードを自分で書く必要がありますが、Pytorchはその作業が不要です。

また操作的な面からいうと、先程ご紹介した機械学習ライブラリNumpyとPyTorchの基本的な操作方法はよく似ているため、Numpyの使い方を知っているとPyTorchもすぐに使えるようになります。

PyTorchの特徴として、ニューラルネットワークを構築するために、計算に必要となる計算グラフを動的に構築するという点が挙げられます。

計算グラフとは、ニューラルネットワークを構築する計算の過程をグラフ化したものです。 PyTorchでは、ニューラルネットワークの計算に必要な計算グラフを実行するたびに構築し、実行するため、動的といいます。 動的な計算グラフのメリットは、柔軟にモデル構築を行えるため、比較的容易に複雑なネットワークを実装できることです。 デメリットとしては、都度計算グラフを構築して実行するため、学習速度がおちます。

よく比較されるTensorFlowは、この計算グラフを最初に構築してから計算処理を実行するため静的と呼ばれています。

Chainerも同じように動的に計算グラフを構築するため、PyTorchとChainerは設計部分で共通箇所が多いライブラリといえます。

Pytorchの利用シーン

最近の最新論文の内容をPyTorchで実装して発表する研究者が多く、PyTorchには代表的なディープラーニング手法の実装例がほとんどすぐに手に入るという利点があります。 この論文を生かして、最新のディープラーニング手法を試すときにおすすめのライブラリです。

MXNet(エムエックスネット)

MXNetの特徴

MXNetは、ワシントン大学とカーネギーメロン大学で開発された深層学習フレームワークです。2016年にAWSがサポートを公表しました。読み方は「エムエックスネット」です。複数言語に対応しており、Pythonのほか、C++、R、Scala、Juliaなどで利用できます。

MXNetの特徴は、スケーラブルなことです。GPUなどの情報資源を追加すればするほど処理能力が向上するため、より短い時間で学習を完了できます。

また、メモリ消費も最適化されているため、軽量で、AndroidやiOSを搭載したモバイルデバイスでも問題なく動きます。

MXNetの便利な点

MXNetが柔軟なフレームワークと言われる所以として、命令的プラグラムと宣言的プログラムを併用することができるという点があります。

これは深層学習フレームワークの中で、 MXNet だけが持っている特徴であり、命令的プログラムと宣言的プログラムが混在していたとしても自動的に並列処理できることから柔軟なフレームワークと言われています。

MXNetの利用シーン

MXNetは、CNN、LSTM、RCNN、Deep Q Networkなど様々な深層学習モデルをサポートしており、画像認識、自然言語処理、レコメンデーションなど様々な場面で使われています。

Deeplearning4j(DL4j)

Deeplearning4jの特徴

Deeplearning4jは、Deep Learning kfor Java の略称で、Javaをベースとして開発されたライブラリです。Skymindというサンフランシスコのスタートアップが開発しており、科学計算においては、計算速度向上の為、N-Dimensional Arrays for Java (ND4J)を利用しています。

Deeplearning4jの便利な点

Deeplearning4jは、Javaで開発されているため、JVM上で動くという特徴があり、既存の情報システムと組み合わせ運用できます。そのため、商用に使われやすく、サポートが提供されているということが利点としてあげられます。特に金融分野の不正検知で利用されている場合に、サポートを依頼できる場所があるというのは非常に安心できると言えます。

Deeplearning4jの利用シーン

Deeplearning4j は、Javaでディープラーニングを行う際に利用されており、例えば、金融分野の不正検知や異常検知、電子商取引や広告のレコメンドシステム、 製造業の不良品検知や画像認識などで使用されています。

Microsoft Cognitive Toolkit(マイクロソフトコグニティブツールキット)

Microsoft Cognitive Toolkitの特徴

Microsoft Cognitive Toolkitは、AI技術を利用したディープラーニングツールキットで「マイクロソフトコグニティブツールキット」と読みます。2016年10月に、大幅なバージョンアップを経て、旧称「CNTK(Microsoft Computational Network Toolkit)」から「Microsoft Cognitive Toolkit」へ改名されました。

Microsoft Cognitive Toolkitは、音声認識や画像認識の領域において、高い処理速度を発揮します。コンピュータが人間の話す言葉を理解する速度を加速させる目的で、Microsoftのボランティアプロジェクトとして開発が始まりました。2016年以降の新バージョンでは、研究ツールから運用環境で動作するものへの転換が宣言されています。

Microsoft Cognitive Toolkitの便利な点

Microsoft Cognitive Toolkitを利用すると、ディープラーニングアルゴリズムのトレーニング/評価を高速で処理することが可能です。GPU上での動作を念頭に設計されていますが、小規模データセットでも利用可能です。

巨大データセット処理時のパフォーマンス低下を最小化するためのアルゴリズムが組み込まれているため、複数マシンで巨大データセットを扱う場合において、他のツールキットに対する優位性があるとされています。

Microsoft Cognitive Toolkitの利用シーン

Microsoft Cognitive Toolkitの利用シーンとしては、Skypeのリアルタイム翻訳に利用されています。 国内では、三井住友銀行が自動応答システムで利用しています。 高度はAIソリューションにより、深層学習モデルによって、対話全体の文脈や意味を捉え、質問の追加や変更を自動応答で対応できるようになりました。

その他にも、画像や音声認識、顔認識といった分野でも活用されています。

PaddlePaddle(パドルパドル)

PaddlePaddleの特徴

PaddlePadlleは、中国最大手の検索サイト 百度(Baidu/バイドゥ)が作成したオープンソースのフレームワークです。「パドルパドル」と読みます。Chainerが国内で日本人に人気なことと同じように、中国では中国語で書かれた開発資料が多く存在しているPaddlePadlleが人気です。

PaddlePadlleの特徴は、クラウドだけでなく、分散コンピューティングのクラスタで高速に稼働することです。 これは開発元のBaiduがクラウドサービスに弱いということが主な原因ではありますが、クラスタ上で稼働するディープラーニングに賭けているともいえます。

中国では現在、国策として人工知能に力を入れており、アメリカよりも多くAI研究が行われています。そのため、風土として新しい技術を取り入れる機運も高まっているため、これから多くの中国系企業が国産フレームワークであるPaddlePadlleを使ってゆくものと思われます。

PaddlePaddleの便利な点

PaddlePadlleの便利な点としては、中国で強いということです。

中国では政府によって Google のサービスが遮断されているため、Tensorflowが使いにくいことに加えて、言語障壁があるため欧米の AI フレームワークが浸透しにくいため、中国で作られたPaddlePaddleが使われます。

PaddlePaddle は、ニューラルネットワークを構築し、 AI を実現するアプローチの中で、例えばネコの画像を認識し、中国語の会話を文字起こしするなど、様々な能力を学習することができます。

また、他のフレームワークがクラウドでの動作を基本とするのに対し、PaddlePaddle はクラスタで稼働するよう設計されています。 クラスタとは相互接続されたコンピュータ群のことで、より細かく制御することができるという利点があります。

PaddlePaddleの利用シーン

PaddlePadlleは、中国語に強く、クラウドではなくクラスタでの利用を重視しています。自前のサーバーでAIを構築をする場合に利用するかを検討してみましょう。

Caffe(カフェ)

Caffeの特徴

CaffeはPythonで作られたディープラーニングのためのライブラリです。「カフェ」と読みます。深層学習のニューラルネットワークという技術に関するさまざまな機能を提供します。なかでも画像認識の処理を得意としています。

オープンソースであるCaffeは、カリフォルニア大学バークレー校のBerkeley Vision and Learning Center(BVLC)を中心に世界中のコミッターが開発をすすめています。C++による実装のため、高速に動作します。

Caffeの便利な点

Caffeが便利な点として、C++で実装され、GPUに対応しているため、高速な計算処理が可能なことがあげられます。

また、Caffe is a community というキャッチコピーもあるほど、開発コミュニティーが活発にGitHubを更新していたり、サンプルコードも多く提供されているため、初心者にもおすすめのライブラリです。

そのサンプルコードに、大規模画像認識のコンテスト「ILSVRC」で2012年に首位を獲得した「畳み込みニューラルネットワークの画像分類モデル」があり、直ぐに利用できるというのも利点です。

Caffeの利用シーン

Caffeは、物体認識や画像処理でよく活用されています。画像データを用意してディープラーニングを行いたい場合に使用を検討するとよいでしょう。

まとめ

今回は、機械学習で人気のライブラリやディープラーニングのおすすめフレームワークから厳選した15個を紹介しました。機械学習の実務ではプログラミング言語にPythonが採用される場合が多いですが、紹介した中にはC++やJavaに対応しているライブラリ・フレームワークもあります。

ディープラーニングフレームワークの選択に迷った際は、まずはドキュメントの充実している「TensorFlow」「Keras」「Pytorch」などから利用してみるとよいでしょう。また、今回紹介した15個以外にも様々なライブラリが存在します。実現したい用途にあったものがなかった場合は、海外の論文などから探してみてもよいでしょう。

WriterAI drops編集部
AIを仕事にするためのキャリアノウハウ、機械学習・AIに関するTopics、フリーランス向けお役立ち情報を投稿します。

関連記事Related Posts