人工知能の開発に使うライブラリの選び方とは?

こんにちは。

ITエンジニア・webディレクター・webデザイナーなどのIT人材の自立・キャリアを支援するITプロパートナーズの木村です。

弊社では、独立精神旺盛な優秀なエンジニアの方々の独立・起業サポートや、フリーランス支援を行っています。

こちらでは、日々の現場でサポートさせていただいている中での、プロの目線で、エンジニアに役立つお話をしてまいります。

人工知能(AI)の開発というと、非常に大変なプロジェクトだと感じる方が多いのではないのでしょうか。

実際、真っ白なところから完全に独力で開発するとなると、その労力は計り知れません。

特に厄介なのは、人工知能のロジック部分です。

人工知能のロジックを作成するためには統計学的知識が必須です。

確率や微分方程式など高度な数学的知識も必要となります。

凄腕のプログラマーといえども、ロジック作成まで凄腕という方はなかなか少ないかと思います。

そこで登場するのが、ロジックを実装されたパーツとして扱えるライブラリです。

今回は、人工知能用ライブラリを10種類、ご紹介いたします。

よく使われるAIライブラリ一覧

プログラミング画像 (1)

ということで、先ずは主な人工知能用ライブラリ・フレームワークの一覧をご紹介します。

なお、今回、選んだものはすべてオープンソースのもので、誰でも無料で利用可能です。

  • CaffeCaffe2(カフェ)

  • DL4J

  • MXNet

  • Chainer(チェイナー)

  • Keras(ケラス)

  • Torch(トーチ) Pytorch(パイトーチ)

  • TensorFlow(テンソーフロー)

  • PaddlePaddle(パドルパドル)

  • Cognitive Toolkit(コグニティブ

いくつかは聞いたことがある、という方もいれば、一つも聞いたことのない方もいるかとお思います。

そこで、次項で一つ一つをご紹介いたします。

それぞれのAIライブラリ説明

圧縮したやつ①

① CaffeCaffe2(カフェ)

Caffeはカリフォルニア大学バークレー校で研究されていた人工知能フレームワークです。

画像認識に特化しており、C++で記述されていることもあり処理が高速という特徴があります。

また、開発元の方針もあり、開発者コミュニティーが非常に活発な点も特徴の一つに挙げられます。

Caffe2は、非常に優れたCaffeFacebookGeForceブランドのグラフィックボード(GPU)メーカーとして有名なNVIDIAが共同で発展させたライブラリです。

もともとのCaffeGPUに演算処理を行わせるGPGPUができるライブラリでしたが、Caffe2ではより効率よくGPGPUができるCUDAにも対応しています。

CUDAとはNVIDIAが開発・提供している並列処理用のアーキテクチャーで、NVIDIA製のGPUの性能を最大限に引き出すことが可能となります。

反面、過度にCUDAに依存した人工知能にしてしますと、リプレース時などにNVIDIA製以外のGPUを選択しにくくなるという、いわゆるベンダロックインの原因にもなります。

もちろん、処理速度や開発者コミュニティーの活発さといった、Caffe時代から続くメリットも受け継いでいます。

② Deeplearning4jDL4J

Deeplearning4jJavaで人工知能開発を考えている方であれば、絶対に外せない人工知能ライブラリです。

なぜなら、Deeplearning4j自体がJavaで記述されているだけでなく、Javaで記述されたオープンソース人工知能ライブラリで唯一、Googleが研究・開発している自然言語処理の手法である「Word2Vec」の研究対象リスト入りしており、ポテンシャルの高さが際立っているためです。

ちなみに、「Word2Vec」とは、「夫婦夫=嫁」といったように、言葉の概念を連想ゲーム的に足し引きする機能を人工知能に与えることで、より自然に言語をコントロールできるようになるのではないか、というものです。

なお、Deeplearning4jはオープンソースですがSkymind社が商用サポートを行っているため、ビジネス用途の利用にも心強さがあります。

画像認識以外にも、電子商取引や広告のレコメンドシステムや、製造業などでの異常検知などビジネスユーズの開発もすでにされています。

③Apache MXNet

Apache MXNetは、名前から推測できる通り「Apache HTTP Server」などで知られるApache財団が開発を進めている人工知能用ライブラリです。

MXNetには面白い特徴があり、ハードウェアリソースが増やすだけで、処理速度が向上し、精度も高まります。

一見、当たり前のことのように思う方も多いかと思いますけれど、通常はハードウェアの増減に合わせて、ハードウェアリソースのコントロールに関するロジックを変更する必要があります。

ハードウェアの変更後、ソフトウェアに手を加えなくてよい、という特徴は非常に画期的で、特にハードウェアリソースの増減が簡単なクラウド環境と非常に相性が良いです。

そのため、Apache財団に資金援助を行っているMicrosoftや、AWSが売り上げの過半数であるAmazonなどのクラウドサービス提供企業からも熱視線を向けられています。

Amazonには「AWS での Apache MXNet」という特設ページも用意されています。

MicrosoftAmazon以外にも、コントリビューター(支援企業)400以上も存在し、将来性が非常に期待できるライブラリです。  

④Chainer(チェイナー)

東大の学生ベンチャーから始まった株式会社Preferred Networksが中心になって開発を進めている人工知能用ライブラリが、Chainerです。

Preferred Networksはトヨタ自動車、国立がん研究センター、工業用ロボットのファナックなどの日本国内に存在する世界的な組織とだけでなく、NVIDIAIntelMicrosoftといった世界的な企業とも協業しており、日本の人工知能用開発をけん引するポジションにいます。

そんな日本企業が作ったライブラリということで、日系企業を中心に利用が広がっています。

売りは、柔軟で直観的にニューラルネットワークを構築できることで、実際、比較的難易度の低いモノから、ディープラーニングを本格的に実装した高度なものまで対応できるライブラリと言われています。

すでに顔認識や音声認識、写真や動画の被写体認識、変わったところでは白黒写真の自動着色などのサービスがChainerによって実現されています。

Caffe2同様にNVIDIAと協業した結果、Chainer にもCUDAが取り入れられています。

CUDAのメリット・デメリットはすでにお伝え済みですので、ここでは触れません。

一つ残念なのは、日本生まれのライブラリなので、公式サイトにも日本語があることを期待したのですが、それはありませんでした。

⑤Keras(ケラス)

公式サイトの文言を拝借すると「迅速な実験を可能にすることに重点を置いて開発された」ことを売りしているライブラリがKerasです。

もう少し具体的に言えばKerasは、「ユーザーフレンドリー」、「モジュール性」、「拡張性」、「Pythonで実装」の四つをガイドラインにおいています。

四つのガイドラインはそれぞれ相互に関連しており、「Pythonで実装」されているため、プログラミング初学者でも扱いやすく「ユーザーフレンドリー」です。

「モジュール性」とは各ロジックが独立した存在であることを意味しますが、各ロジックを自由に組み合わせることができるという意味でもあり、組み合わせ方次第で、様々な人工知能を開発できる「拡張性」に繋がっています。

また、「Pythonで実装」しているため、ロジックか理解しやすく、手を加えやすいという点でも「拡張性」が高い言語です。

Kerasのこれらの特徴は開発速度が求められる環境や試行錯誤しながら開発を進めるプロトタイプ開発などで、非常に役立ちます。

Torch(トーチ) Pytorch(パイトーチ)

TorchPytorchの違いをまず確認しておきたいと思います。

Torchというライブリはブラジル生まれのLuaというプログラミング言語のためのもので、それをPython用に移行した“TorchPython API”Pytorchです。

つまり、TorchPytorchは基本的には同じもので、どちらもライブラリの大半がLuaで記述されています。

Luaはゲーム業界で特に広く利用されている言語で、Pythonと同じくくりの汎用スクリプト言語ですが、Pythonやそのライバル言語であるPerlRubyよりも挙動が高速という優れた長所があります。

FacebookTwitterなどのSNS業界の大手もデベロッパーとして参画しています。

他にも、NVIDIAが参画しているため、やっぱりCUDAのメリット・デメリットを持っています。

近年、急速に利用者が増えているライブラリです。  

⑥TensorFlow(テンソーフロー)

人工知能用ライブラリとしておそらくもっとも知られているのがTensorFlowです。

有名な理由はずばり、人工知能開発で第一線を進んでいるGoogleによって公開されているためです。

PythonC言語(CC++)JavaGoと多くの言語に対応しており、ハードウェアについても、CPUCUDAによるNVIDIA _ GPUでのGPGPUはもちろんのこと、スマートフォンでおなじみのSnapdragonを作っているクアルコムから販売されているHexagon DSPGoogle TPUと呼ばれるTensorFlow用のカスタムチップなど、多様な選択肢があります。

ちなみに、CPUCPUでもIntelCPUを使う場合はIntel Math Kernel Library (Intel MKL)というIntelが最適化したライブラリがあり、それをTensorFlowに組み込むことが可能です。

さらにモバイル向けのTensorFlowもあり、androidiOSさらにはRaspberry Pi用のTensorFlowもあります。

全方位死角なしのライブラリです。 

PaddlePaddle(パドルパドル)

中国最大で世界でも第二位の検索エンジン「Baidu(百度)」が主導して開発・公開しているのがPaddlePaddleです。

中国は国家として人工知能の開発に非常に力を入れており、人工知能大国です。

その理由として最大のものは一党独裁に人工知能が非常に役立つと考えられているためです。

中国の治安機関では、監視カメラの映像とインターネット上の活動を人工知能によって監視することで、犯罪者やテロリストが凶行を起こす前に割り出し拘束することで、犯罪のない世界を目指すというSF映画のような治安対策が真剣に検討されています。

すでに、新疆ウイグル自治区では、監視カメラの映像などを使って、自宅と職場以外の場所に行って不審な行為をしていないか人工知能を使って監視していることが示唆されています。

このディストピア的な治安対策にPaddlePaddleもなにかしらの役割を担っているのではないかという疑いから、諸外国のIT企業、エンジニアが使うことは滅多にないです。

しかし、他国からの情報を遮断されており、Googleもアクセス禁止のため、TensorFlowも使えない中国国内エンジニアからはPaddlePaddleは非常に人気のようです。

⑧Cognitive Toolkit(コグニティブ ツールキット)

Microsoft Cognitive Toolkitとは、その名の通り、Microsoftが開発を主導している人工知能用ライブラリです。

もともとはCNTKと呼ばれていました。

その特徴はハードウェアメーカーが作ったライブラリなだけあり、ハードウェアリソースの利用効率が重視され、非常に効率が高いです。

TensorFlowより処理速度が速く、デザインによってはTensorFlowに対してCognitive Toolkitの方が510倍ほど高速となります。

IntelといえばCPUメーカーですが、もちろんGPGPUにも対応しています。

まとめ

今回は、人工知能の開発に使うライブラリについてご紹介いたしました。

ちなみに、利用者数という意味ではarXiv という論文データベースでの利用ケース数比較を行うと、2017年末時点では、TensorFlowが一位で、Kerasが二位、三位がCaffeだったそうです。

あくまで論文ベース、つまり研究機関での実績であり、ビジネスユーズとの差があるのはまず間違いないと思いますが、TensorFlowが人気なのはまず間違いなさそうです。

いずれにせよ、それぞれ性質が異なり得意不得意がありますので、用途に合ったライブラリ選びが重要です。

ライブラリを実践的に仕事の中で使用して、自分の得意なライブラリを見つけてもいいかもしれませんね。

ITプロパートナーズへの詳細はこちら

bn04

もし、今あなたが

・フリーランスになるか悩んでる
・自分に合った案件があるのか不安
・そもそも何から始めればいいのか分からない

などお困りであれば、ぜひ弊社ITプロパートナーズの案件を確認してみてください!

専属エージェントに無料相談もできますよ!

※週2日 / 30万〜のフリーランス案件を紹介中です
※ご経験やご希望によっては案件を紹介できない場合がございますのでご了承ください。


よく見られてる関連案件

b80c977483d024c14549510e194361fe 2_anken 3_anken
The following two tabs change content below.
株式会社ITプロパートナーズ

株式会社ITプロパートナーズ

「IT起業家・フリーランスの自立を支える」というビジョンの元、「週2日からの業務委託案件を紹介する、ITプロパートナーズ」を運営。 ■BestVenture100に創業初年度で選出 ■取材記事:自立する覚悟が、働き方を変える
株式会社ITプロパートナーズ

最新記事 by 株式会社ITプロパートナーズ (全て見る)

freelance