ラベル Machine Learning の投稿を表示しています。 すべての投稿を表示
ラベル Machine Learning の投稿を表示しています。 すべての投稿を表示

[Machine Learning] AI神話5選とその現実/5 Artificial Intelligence Myths: The Realities Will Make You Think Twice

原文はこちら

エンタープライズでのAI(人工知能)利用という話は、ハイプ・サイクルのまさしく頂点に位置づけられています。AIがここ数十年間でもっとも破壊的テクノロジーになるであろうことは真実です。しかし今日では、経営幹部たちから降りてくるものの多くは神話であるようです。
  
ハイプ・サイクルが示しているとおりに、経営幹部たちの期待は増しに増しています。ここでは神話と現実を仕分けすることにしてみましょう。Oracle Open WorldでのClive Swanのプレゼンテーションをもとに、以下にエンタープライズAI神話5選をまとめています:
神話その1:エンタープライズAIでは自前構築アプローチが必須である
現実:エンタープライズAIでは自前構築と外部調達の両方が必要。あなたのビジネス上の要求がユニークなものであると信じたいものですよね、でもちょっと考えてみてください。そうした要求のうち、実際どの程度かは業界で共通したものじゃないですか?あなたは少数のお試しプロジェクトをDIYで始めることはできるかもしれませんが、でもAIの価値を引き出すために本当に重要なのは、あなたの企業全体でそれを活用するということです。一般的なビジネス上の課題についてはすぐに使えるAIソリューションを用いて対処しつつ、差別化により価値を生み出せるところに自社のデータ・チームの労力を集中させたほうがよい、ということに賢明な企業は気づいています。Oracleの構成済AIアプリケーション は、バックオフィス業務(財務やサプライチェーン)からカスタマーエクスペリエンス(セールスとマーケティング)、そして人材管理までカバーしています。

神話その2:AIを使うと魔法のような効果がもたらされる……いますぐに

現実:AIは魔法ではない。AIで結果を出すまでの道のりは険しく、また、長いものです。技術だけでは成功はできず、バラバラなAIソリューションがとっ散らかっている、という事態を避けるためには、戦略的なフレームワークと反復アプローチが必要になります。魔法のような結果を出すためにムーンショットを狙いたくなる誘惑がありますが、そうしたプロジェクトの多くは失望に終わることになります。
                                             
神話その3:エンタープライズAIで人が不要になる
現実:エンタープライズではAIと人が互いを必要とする。ロボットによる支配は起こりません。AIが真価を発揮するのは、それが人間の能力を補強することにこそです。AIは単純作業から人々を開放し、もっと戦略的な活動を行うことができるようになります。それによって従業員はモチベーションが上がったり、生産的になったり、より会社に尽くしてくれるようになったりといった副次的効果もあるでしょう。また、エンタープライズAIは、データを与えてくれ、そのデータをうまく使いこなせるようにしてくれる人間が必要としています。AIは問題について最終的な結論を導き出してくるようなものではなく、むしろそれを人間が導き出すために必要な、多くの情報を踏まえた推奨をしてくれるものです。最近の研究では、64%のひとがマネージャーよりもロボットのほうをより信頼するという結果が示されています。しかし、わたしたちがAIによる自律的な意思決定を求めても、AIによる推奨が一定の信頼性のレベルに達しないような状況というのは必ず発生します。なので、AIソリューションは人間に結論を出すことを志向しているのです。

神話その4:データは多ければ多いほどよい

現実:エンタープライズAIはスマートなデータを必要とする。この神話は至るところにまん延しています。なるほど、いかなるAIソリューションにとっても、データは燃料のようなものです。しかし、最も重要と成るのは、そのデータが高品質なもので、関連性が高く、最新のもので、エンリッチされていることです。統一エンタープライズデータモデルから始めるのはいいアイディアなのは、それがデータの完全性を確かにしているからであって、品質を保証しているわけではありません。データレイクは重要ですよね、でもそれ自体は完全性や品質上の問題の解決にはなっていません。つまり、あなたに必要なのは、高品質で包括的で最新のデータ、スマートなデータです。
必要となるのは、AIアプリケーションと当該データの領域での専門知識です。Oracle DataFoxクラウドサービスに備わっているモダンなデータエンジンは、AIを活用してデータ収集だけでなく、データのエンリッチも自動化しています。自然言語処理(NLP)と機械学習、そして人間参加型(human-in-the-loop)テクニックを組み合わせて使うことで、Webをスキャンし、信頼できるB2B企業データとシグナルを作成します。

神話その5:エンタープライズAIの成功のために必要となるのはデータとモデルだけ

現実:データとモデルは始まりにすぎず、スケーラブルなAIソリューションが必要となる
これまで、ほとんどのエンタープライズAIソリューションはデータサイエンティストによって手作りされたもので、煩雑なマニュアルでの構築や、それに続くマニュアルでのメンテナンスを必要とするものでした。問題あるかって?こうしたアプローチはスケールしないんですよ。Oracleの戦略はAIソリューションを工業化すること、例えば、従前高給取りのデータサイエンティストがマニュアルでやっていたテクニカルなメンテナンスタスクを機械学習を用いて自動化するといったことです。このようなやり方で、数千のお客様が使うわれわれのエンタープライズ・スイートに、数百のAIモデルを展開することができています。

Oracleは、エンタープライズ企業は成長するために、もしかするとただ生き残るためにすら、AIを活用することが必須だと信じています。しかし、そのためには願望にもとづいて思考するのではなく、冷静なアプローチが求められます。わたしたちはいかなるエンタープライズ企業にとってもAIができるだけ使いやすく、またお求めやすくなるようにしていきたいと思っています。なので、わたしたちのすぐに使えるAIを活用したクラウドアプリケーションを使いながら、あなた自身のエンタープライズAIを構想していただけるようにしています。すぐに構築できるAIプラットフォームと、セキュリティパッチ、バックアップ、チューニングが自動化されたAutonomous Databaseによって、あなたのチームは価値を生むプロジェクトに集中できるというわけなんです。
Oracle AIについてもっと詳しく知りたければ、oracle.com/artificial-intelligenceを訪ねてみてくださいね。

[Machine Learning] Oracle CloudでAutoMLを使って機械学習/Hide Machine Learning Complexity Using AutoML in Oracle Cloud

原文はこちら


 データは新たな石油であり、データサイエンティストは未来の職種です。わたしたち誰もがこの職種について聞いたことがありますが、企業にとってはこの職種を雇うのはいまだ簡単ではないようです。十分な経験を持ち合わせていないわたしたちが機械学習を始めるにはどのようにしたらいいでしょうか?

機械学習におけるチャレンジ

機械学習のユースケースのうち、画像分類や価格予想、異常検知などのいくつかのものはとてもシンプルです。しかしこうしたユースケースについても、ニューロンネットワークの知識を持った専門のデータサイエンティストに、結果の改善とチューニングの手助けをしてもらう必要があります。機械学習の主なタスクとして、以下が必要となります:
  • データの前処理とクリーニング
  • 適切な機能の選定と構成
  • 適切なモデル・ファミリーの選定
  • モデルのハイパーパラメータの最適化
  • 機械学習モデルの後処理
  • 得られた結果の批判的分析
Depending on the business problem, it can take up to hundreds of experiments until we reach the solution. This is for experienced data scientists -- imagine for a non-expert!
ビジネス上の課題によっては、解決にたどり着くまでに何百もの実験が必要になります。ここで経験豊富なデータサイエンティストの出番というわけです。非ー専門家には難しすぎます! 

AutoMLとは?

AutoMLというアイディアとは、ニューロンネットワークの改善に機械学習を使うということです。ユーザーによって指定されたタイムフレームの中で、学習とチューニングを自動的に行うのがAutoMLの役目となります。このとき複雑さはすべてシンプルなAPIやフレームワークの裏に隠蔽され、機械学習モデルをわずか数行のコードで作成できるようにしてくれるわけです。
エンタープライズ企業にとってAutoMLは以下をはじめ多くの利点をもたらします:
  • 迅速なマーケット投入…あなたのデータサイエンティストはパラメータ調整やルーチン作業から解放され、課題に集中できるようになります
  • 誰でも機械学習を始められる…機械学習を始めるのに専門家になる必要はありません
すごいですね!このAutoMLの選択肢としてGoogleが提供するサービスが ありますが、1時間あたり20ドル程度のコストがかかります!ならオープンソースコミュニティを検討してみませんか?

Oracle CloudでAuto-Kerasを実行する

Auto-Kerasはオープンソースのpythonのツールで、Kerasをベースにしています。Texas A&M UniversityのData Labで開発されました。Auto-Kerasはあなたのディープラーニングモデルのための正しいアーキテクチャとハイパーパラメータを自動的にサーチします。インストールも実行も簡単で、成長中のコミュニティからは多くの例が提供されています。
Auto-KerasをOracle Cloudでインストールして使ってみましょう!
どうしてOracle Cloudかって?多くの理由があります。テストや開発をしたい、あるいは商用稼働のための環境がほしい、そのどちらにもソリューションをご用意しています。またOracleは商用環境のためのGPUマシンも提供しています。
OracleはFree Tierを提供しており、Autonomous DatabaseとComputeのリソースを時間制限なしで使えます!そうです、時間制限なしにです!ここで無料アカウントをゲットして始めましょう!
ここでの例では、手書きの数字データを収めたMNISTデータベースを使います。このデータベースは各桁についてラベルも含んでいます。目標は数字の認識です。KerasとAuto-Kerasを比べてみることもできますね。Kerasでは71行のコードが必要となります(ここでチェックできます)。
ではこれをAuto-Kerasで実行してみましょう。ここではFree TierのシンプルなComputeマシンを使ってこの例を実行していきます。
Auto-Kerasはまだプレリリースバージョンであることには留意しましょうね。正式バージョンがすぐにリリースされるように願っておきましょう。
まず、前提となるpython 3.6をインストールする必要があります: 
$ yum install python36
Auto-Kerasのインストールはすごく簡単で、以下を実行するだけです:
$ pip3 install autokeras 
準備は万端となったので、例の実行のために以下のコードを実行しましょう: 
from tensorflow.keras.datasets import mnist
from autokeras.image.image_supervised import ImageClassifier

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,))
x_test = x_test.reshape(x_test.shape + (1,))
clf = ImageClassifier(verbose=True, augment=False)
clf.fit(x_train, y_train, time_limit=1 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
y = clf.evaluate(x_test, y_test)
print(y * 100)

モデルの比較とチューニングが行われ、過程と結果とが表示されます:

Saving model.
+--------------------------------------------------------------------------+
|        Model ID        |          Loss          |      Metric Value      |
+--------------------------------------------------------------------------+
|           0            |  0.14653808772563934   |   0.9875999999999999   |
+--------------------------------------------------------------------------+


+----------------------------------------------+
|               Training model 1               |
+----------------------------------------------+
Epoch-1, Current Metric - 0:  13%|███                         | 60/465 [00:55<06:12,  1.09 batch/s]
Epoch-2, Current Metric - 0.98:  75%|██████████████████      | 350/465 [05:49<01:57,  1.03s/ batch]
Epoch-4, Current Metric - 0.992:  52%|████████████           | 240/465 [04:08<03:58,  1.06s/ batch]

最終的に、98.65の精度を得ることができました。これで終わりです!
AIおよび機械学習についてもっと知りたい方は、Oracle AIのページも見てみてください。

[Machine Learning] Introducing GraphPipe

原文はこちら。
https://blogs.oracle.com/developers/introducing-graphpipe

Dead Simple Machine Learning Model Serving

ここ数年で機械学習は急速に進歩し、今日ではどれか一つのフレームワークを使って、オンラインチュートリアルに従い、動作する機械学習モデルを数時間で作成できるようになりました。しかし残念なことに、そのモデルを本番環境に展開する準備ができたとしても、まだ固有の課題に直面します。

第一に、モデルを提供するAPIに標準がないため、フレームワークで提供されるもので悩まされる可能性があります。これは、Protocol Buffersかもしれませんし、カスタムのJSONかもしれません。あなたのビジネスアプリケーションは、デプロイされたモデルと話すためだけに、特注のクライアントを必要とすることが一般的です。複数のフレームワークを使用している場合はさらに事態が悪化します。複数のフレームワークからモデルのアンサンブルを作成したい場合は、組み合わせるためのカスタムコードを記述する必要があります。

第二に、モデルサーバーの構築は非常に複雑です。デプロイはトレーニングほど注意を払う必要がないため、すぐに使えるソリューションはほとんどありません。例えば、TensorFlow ServingのGPUバージョンを構築してみてください。頭を数日間打ちつける準備をしておくべきでしょう。

最後に、既存のソリューションの多くはパフォーマンスに重点を置いていないため、特定のユースケースではパフォーマンスが不足します。Python-JSON APIを使えば複雑なモデルからtensorデータの束を取得できますが、パフォーマンスが重要なアプリケーションのためにそのデータの束をカットしてはくれません。

この3つの課題を解決するためにGraphPipeを作成しました。ネットワーク経由でtensorデータを送信するための標準的な高性能プロトコルと、あらゆるフレームワークの機械学習モデルを簡単にデプロイおよび照会するクライアントおよびサーバーの簡単な実装を提供します。GraphPipeの効率的なサーバーは、TensorFlow、PyTorch、MXNet、Microsoft Cognitive Toolkit (CNTK)、またはCaffe2で構築されたモデルに対応できます。
TensorFlow
https://www.tensorflow.org/
PyTorch
https://pytorch.org/
MXNet: A Scalable Deep Learning Framework
http://mxnet.ai/
Microsoft Cognitive Toolkit (CNTK)
https://www.microsoft.com/en-us/cognitive-toolkit/
Caffe2 - A New Lightweight, Modular, and Scalable Deep Learning Framework
https://caffe2.ai/
GraphPipeがOracleのGitHubからご利用いただけるようになったことを発表できうれしく思っています。ドキュメンテーション、サンプル、その他の関連コンテンツは、以下にあります。
GraphPipe -- Dead Simple ML Model Serving via a Standard Protocol
https://oracle.github.io/graphpipe

The Business Case

企業組織では、機械学習モデルは個別に訓練され、特注の技術を使用して導入されることがよくありますが、これは機械学習の取り組みから価値を引き出す組織の能力に影響を与えます。ファイナンスグループが作成したモデルをマーケティンググループが使用したい場合、モデルと対話するカスタムクライアントを作成する必要があります。モデルに人気が出て営業グループも利用したいと思った場合、カスタムクライアントが負荷に耐えられない可能性があります。

モデルが顧客が目にするモバイルアプリケーションやIoTアプリケーションに現れ始めると、悪化する一方です。多くのデバイスはモデルをローカルで実行できるほどの能力はないため、リモートサービスに要求する必要があります。このリモートサービスは、さまざまな機械学習フレームワークのモデルを実行しながら、効率的で安定していなければなりません。

標準があれば、研究者はお望みのツールを使って最良のモデルを構築し、特別なクライアントを使わなくてもユーザーはモデルの予測にアクセスできます。モデルを複数のサーバーにデプロイでき、共通のプロトコルを使ってより大きなアンサンブルに簡単に集約できます。GraphPipeは、ビジネスが機械学習の投資から価値を引き出すために必要なツールを提供します。

Implementation Details

GraphPipeは、リモートプロセス間の機械学習データの送信を簡素化し、標準化するために設計された効率的なネットワークプロトコルです。現在、深層学習アーキテクチャのコンポーネント間でtensorのようなデータの伝送方法に対する支配的な標準は存在しません。そのため、開発者にとっては、非常に非効率なJSONや、大規模で複雑なソフトウェアであるTensorFlowに付いてくるTensorFlow ServingのProtocol Buffersのようなプロトコルを使うことが一般的です。GraphPipeは、効率のよいバイナリのメモリマップフォーマットでありながら、シンプルかつ依存関係を少なくするように設計されています。

GraphPipeは以下のものを包含しています。
  • FlatBuffers定義のセット
  • FlatBuffers定義に従って一貫してモデルを提供するためのガイドライン
  • TensorFlow、ONNX、およびCaffe2からモデルを提供するサンプル
    ONNX
    https://onnx.ai/
  • GraphPipeを使って提供されるモデルを照会するためのクライアントライブラリ
要するに、GraphPipeリクエストはTensorFlow Servingの予測リクエストのように振る舞いますが、メッセージフォーマットとしてFlatBuffersを使用します。 FlatBuffersは、GoogleのProtocol Buffersと似ており、デシリアライズ時のメモリコピーを避けるという利点があります。FlatBuffers定義は、入力tensor、入力名、および出力名を含むリクエスト・メッセージを提供します。 GraphPipeリモートモデルはリクエスト・メッセージを受け取り、要求された出力名につき1個のtensorを返します。リモート・モデルは、サポート対象の入出力のタイプとシェイプに関するメタデータも提供する必要があります。

Performance

まず、カスタムujson APIを使うPython、TensorFlow Servingの予測リクエストを使用するProtocol Buffers、およびGraphPipeリモートリクエストでの、浮動小数点tensorデータのシリアライズ、デシリアライズの速度を比較します。リクエストは約1,900万の浮動小数点値(128個の224x224x3イメージで構成)で構成され、レスポンスは約320万の浮動小数点値(128の7x7x512畳み込み出力で構成)です。 縦軸の単位は秒です。

Flatbuffersではメモリコピーなしで基礎となるデータへアクセス可能なので、GraphPipeはデシリアライズ時の性能が特に顕著です。

次に、Python-JSON TensorFlowモデルサーバー、TensorFlow Serving、およびGraphPipe-Go TensorFlowモデルサーバーを使用して、エンドツーエンドのスループットを比較します。いずれの場合も、バックエンドモデルは同じです。に大きなリクエストを1個のスレッドを使用するサーバ、5個のスレッドを使用するサーバに投げています。縦軸の単位は、モデルによって計算された1秒あたりの行です。

このテストでは、Tensorflow Serving構築の推奨パラメータを使用していることにご注目ください。TensorFlow Servingの推奨ビルド・パラメータではあまり性能が出ませんが、最終的にはGraphPipe実装と同等のパフォーマンスを実現できるコンパイルパラメータを導き出すことができました。言い換えれば、最適化されたTensorFlow ServingはGraphPipeと同様のパフォーマンスを発揮しますが、TensorFlow Servingを最適に実行するためのビルド方法は文書化されておらず、そのビルドも容易ではありません。

Where Do I Get it?

ドキュメントやサンプルは以下の場所にたくさんあります。
GraphPipe -- Dead Simple ML Model Serving via a Standard Protocol
https://oracle.github.io/graphpipe
GraphPipeのFlatBuffersの仕様はPythonやGoの仕様を実装するサーバと共にGitHub上にあります。
GraphPipe - Dead Simple ML Model Serving via a Standard Protocol
https://github.com/oracle/graphpipe
Python、Go、Java(これはまもなくリリース予定)のクライアント、ローカルのTensorFlowグラフの中にリモートモデルを含めることができるTensorFlowプラグインも提供します。
GraphPipe for python
https://github.com/oracle/graphpipe-py
GraphPipe for Go
https://github.com/oracle/graphpipe-go
GraphPipe for Java (2018/08/16現在リンクはまだ有効ではありません)
https://github.com/oracle/graphpipe-java
GraphPipe helpers for TensorFlow
https://github.com/oracle/graphpipe-tf-py