フレームワークは利用頻度の高いプログラムをまとめて、一部を修正するだけで利用できるようにした「ひな形」です。ゼロからプログラミングするより開発工程や期間を短縮可能で、プログラマーの負荷を軽減できます。
AI(人工知能)の開発においても、さまざまなフレームワークがあります。多くのAIフレームワークは、オープンソース(OSS)として開発者に無償で提供されています。オープンソースで提供されている著名なフレームワークを10ピックアップしました。
あらためてフレームワーク、ライブラリとは
具体的なフレームワークを挙げる前に、まずフレームワークと、似たような意味をもつライブラリ、フォーマットについて、前提となる基礎知識を整理します。
フレームワーク、テンプレート、フォーマットの違い
フレームワーク(framework)は「枠組み」と翻訳されます。混同しやすい言葉にテンプレートがありますが、テンプレートは定型的なレイアウトなどを保存したファイルという意味合いです。たとえばパワーポイントではマスタースライドのデザインで、プリセットのレイアウトを利用することができますが、自分で考えて内容を書かなければなりません。
フォーマットという言葉もありますが、標準的な形式や書式のことで、やはりフレームワークとは異なります。たとえばPDFは「Portable Document Format」の略で、あらゆるデバイスで閲覧できる文書のファイル形式です。
ライブラリとは
ライブラリ(library)は、テンプレートと同じように開発の負荷を軽減します。日本語の翻訳は「図書館」であり、プログラムの部品として利用できるファイルを集めたものです。他のプログラムから呼び出して利用することは可能ですが、単体では動作しません。
フレームワークは、汎用的な機能の全体が提供されているため、目的に合わせて一部を変更して利用することが可能です。チームで開発を行う場合には、開発水準を合わせやすいメリットがあります。一方、ライブラリは、一般的に実行可能ファイルと連結するオブジェクトコードで記述され、特定の機能を組み込む用途で使われます。
AI分野におけるフレームワークとライブラリ
現在のAIではディープラーニング(深層学習)がメインです。もちろん機械学習のフレームワークもあり、Pythonのような特定の言語のライブラリはAIの開発時に知っておくと便利です。
多くのフレームワークやライブラリはオープンソースとして提供され、PythonやC++など複数の言語で利用することが可能です。AI開発の進展とともに、フレームワークやライブラリは充実しつつあります。また、AzureをはじめとしたPaaSでは、オープンソースのフレームワークやライブラリに対応して、クラウド上のAI開発環境を整えています。
代表的な10のフレームワークとライブラリをピックアップして解説します。
01. TensorFlow
TensorFlow(テンソルフロー)は、GoogleがGoogle Brainというプロジェクトで開発しているニューラルネットワークを基盤としたライブラリです。「Tensor」とは、多次元データ構造を表現する意味があります。
Googleの音声検索、言語翻訳、画像検索、画像のテキスト化、メールの分別など、幅広い用途に使われるフレームワークです。顔認識のシステムや自動運転の分野においても実用化されています。犯罪防止や捜査に役立つAIシステム構築するフレームワークとしても期待されています。
C++が中心ですがPythonにも対応し、複雑な問題解決のための高度な機能を実装できることが特長です。計算をフローやグラフなどで可視化します。
02. MXNet
MXNet(エムエックスネット)は、ワシントン大学とカーネギーメロン大学で開発され、2016年にAmazonのAWSがサポートを公表しました。PythonのほかC++、R言語、最新のJuliaなど複数の言語で利用することが可能です。
「効率性」「柔軟性」「スケーラビリティ」が重視され、命令的プラグラムと宣言的プログラムを併用可能なことが特徴です。CNN、LSTM、RCNN、DQNなどの機械学習モデルをサポートし、画像認識や自然言語解析、レコメンデーションエンジンの構築などで活用されています。
GPUなどの情報資源を追加すると処理能力が向上し、学習時間を短縮化することが可能です。メモリの消費を最適化し、AndroidやiOSを搭載したモバイルデバイスで稼働します。
03. Pytorch
Pytorch(パイトーチ)は、Torchをもとに作られた計算ライブラリです。Torchは機械学習の自然言語処理のライブラリで、2016年に発表されました。初期段階ではFacebookの人工知能研究グループが開発に携わっていました。最新技術をPytorchで実装する研究者が多く、最新のディープラーニングの動向を知る目的では注目すべきライブラリといえるでしょう。
ニューラルネットワークの構築のために、計算グラフを動的に生成することが特徴です。TensorFlowより柔軟にモデルを構築できますが、学習速度が低下するデメリットもあります。動的な計算グラフの生成ではChainerと設計の面で類似性があり、操作方法としてはNumpyと共通点があります。
04. Microsoft Cognitive Toolkit
Microsoft Cognitive Toolkit(マイクロソフトコグニティブツールキット)は、人間の話し言葉による会話の理解を高速化するために、Microsoft社内のボランティアによるプロジェクトとして開発が始まりました。2016年10月に「CNTK(Microsoft Computational Network Toolkit)」から改名、大幅なアップデートにより研究ツールから運用環境に移行しています。
活用事例としては、Skypeのリアルタイム翻訳に採用されています。 また、日本では三井住友銀行の自動応答システムに導入されました。 ディープラーニングの学習モデルによって、対話全体の文脈や意味を認識し、質問の追加や変更を自動的に対応することが可能です。
05. Keras
Keras(ケラス)は、Phythonによるニューラルネットワークのライブラリです。アルゴリズムとパラメータを指定するコードの記述がシンプルで、深層学習における数学的な処理を実行できます。モジュール化などによって迅速な設計が可能で、機械学習のプロトタイピングなどに利用されています。
06. NumPy
NumPy(ナンパイまたはナムパイ)は、数値計算を行う機械学習の定番ライブラリのひとつです。機械学習に加えて、多言語や画像の処理、音声の処理など幅広く活用できます。配列処理の能力に優れ、C言語やFortranといったコンパイル型言語で実装されているために高速処理が可能です。
C言語呼び出しのAPIによって外部ライブラリへデータを受け渡したり計算結果を戻したり、データコンテナとして動的インターフェースの役割があります。
07. scikit-learn
scikit-learn(サイキット・ラーン)は、Pythonの機械学習全般のライブラリです。統計学、パターン認識、データ解析の分野で充実しているため、研究者に人気があります。NumPyよりも、さまざまな機械学習の実装を簡単に試すことができます。大量のデータを扱わなければ、そのまま実用化することが可能です。
scikit-learnは、機械学習の分類、クラスタリング、回帰、次元削減の目的で使われます。分類とクラスタリングはいずれもデータをまとめる処理で、分類ではラベルによってグループを作り、クラスタリングは特徴から近いデータをグループ分けします。回帰は、主として既存の数値データから予測を行うときに利用されます。次元削減は、データの可視化と圧縮によってAIの学習過程において認識を向上させます。
08. Chainer
Chainer(チェイナー)は、ニューラルネットワークを実装するライブラリで、日本の株式会社Preferred Networks(PFN)が開発しました。日本人エンジニアに人気があります。しかし、2019年12月に開発を終了し、PFNは今後、PyTorchに移行することを発表しています。
09. Eclipse Deeplearning4j
Eclipse Deeplearning4jはJavaベースのライブラリです。JVM(Java仮想マシン)上で動作するため、Javaで構築された既存の情報システムと組み合わせて商用利用が可能で、サポートも提供されています。金融分野の不正検知をはじめとして、製造業の不良品検知、スパムフィルタ、RPA、ECサイトのレコメンドシステムなどで活用されています。
10. Cafe
Caffe(カフェ)は、画像認識に特化したディープラーニングのライブラリです。学習済モデル配布フレームワーク「Caffe Model Zoo」があり、「ILSVRC」で2012年にトップに輝いた畳み込みニューラルネットワークの画像分類モデルをそのまま利用できます。コミュニティーが活性化していて、初心者に馴染みやすいことが特徴です。C++の実装でGPUに対応していることから、計算処理が高速です。
まとめ
AI関連のオープンソースによるフレームワークやライブラリは、種類と特徴を熟知して、うまく開発に取り入れることが大切です。このことによって、AIエンジニアや開発者の負荷を軽減し、より完成度の高いAIシステムを構築できます。コミュニティーに参加して、最新の情報を入手するとよいでしょう。