MLaaS

【無料化速報レビュー】SONYのディープラーニングクラウドサービスを触ってみました

  • このエントリーをはてなブックマークに追加

GoogleやAmazonなど海外IT大手がこぞって注力をしているMLaaS(マシーンラーニング・アズ・ア・サービス)ですが、Sonyもこの分野で勝負をしている企業の一つです。

SonyのMLaaSですが、「コンソールソフトウェア:Neural Network Console」(ニューラル・ネトワーク・コンソール)と名付けられており、2017年夏に利用開始となりました。Neural Network Consoleですが、当初はWindows OSのみのダウロード式のソフトウェアーのみでしたが、11月10日よりクラウドバージョンも提供が開始となり、さらに無料枠も設けられました!

現在は、「ベータ版」としての提供となっています。無料枠ですが、「10時間のCPU学習」「10GBのストレージ」「10のプロジェクト」で、それ以上は有料となっていますが、ひとまず最低限の使い試しをするのは可能かと思います。

という事で、早速、無料枠を利用してSony Neural Network Console(ソニー・ニューラル・ネットワーク・コンソール)のクラウドβ版を使って見ました!サンプルプロジェクトが提供されていましたので、そちらをひとまず触ってみることにします。

現時点では英語版のみ提供(?)

無料会員登録を行い、早速、ログインをしてみました・・・が!インターフェースが英語です。Neural Network Consoleの説明ページなどは日本語で書かれていますし、現時点では日本のみ利用が可能との事ですが、クラウドのインターフェースの設定などを一通り確認してみたのですが、日本語への切り替えはなさそうです。

公式ページでは現時点では「日本」のみ利用可能地域となるのですが・・

とりあえず、今回は英語のまま触ってみることにします!

サンプルプロジェクトを触ってみる

まず、プロジェクトを作ってみましょう。サンプルで使えるプロジェクトが13個も提供されているのは嬉しいですね。ロジスティック回帰やバイナリーCNN、さらに、再帰型ニューラルネットワーク(RNN)やRNNの拡張のLSTMのサンプルプロジェクトが提供されているようです。全てのサンプルでMNISTのデータセットが使われているようです。

ひとまず、ベーシックとなるロジスティック回帰のサンプルを動かしてみたいと思います。

  • 今回使ったサンプル  tutorial.basics.01_logistic_regression
  • tutorial.basics.02_binary_cnn
  • tutorial.basics.06_auto_encoder
  • tutorial.basics.10_deep_mlp
  • tutorial.basics.11_deconvolution
  • image_recognition.MNIST.LeNet
  • tutorial.recurrent_neural_networks.elman_net
  • tutorial.recurrent_neural_networks.bidirectional_elman_net
  • tutorial.recurrent_neural_networks.elman_net_with_attention
  • tutorial.recurrent_neural_networks.gated_recurrent_unit(GRU)
  • tutorial.recurrent_neural_networks.long_short_term_memory(LSTM)
  • tutorial.recurrent_neural_networks.LSTM_auto_encoder
  • tutorial.recurrent_neural_networks.stacked_GRU

プロジェクトのページに上記サンプルが表示されていますので、「tutorial.basics.01_logistic_regression」をクリックすると、サンプルを使った新規プロジェクトが作成可能です。

まずはデータセットを確認してみました

プロジェクトが作成されると、プロジェクトの詳細ページへリンクが付きますので、そちらをクリックすることで詳細ページへの移動が可能です。

今回サンプルで使ったプロジェクト「tutorial.basics.01_logistic_regression」ですが、特にプロジェクトの概要説明などがありません・・。ですので、まずはデータセットを確認してみましょう。

上部のメニューから「DATASET」をクリックすると、このプロジェクトで使用されるデータセットの確認が可能です。このサンプルでは、トレーニング用として1500、評価用として500のMNISTのデータが入っているようです。

データの確認もクラウド上で確認が可能になっています。トレーニング用のデータセットをみてみると、Index(インデックス)、x:image(MNIST画像データ)、y:label(正解ラベル)が付与さていますね。

こちらのトレーニング用のデータセットを確認する限り、どうやら4と9のみのMNISTデータを訓練させて、どちらかの手書き数字を見分けるモデル(ロジスティック回帰)のサンプルのようです。(4が0、9が1のカテゴリインデックスされています)

サンプルのニューラールネットワーク構成を確認

次に上部メニューの「EDIT」へ移動をすると、プロジェクトのニューラルネットワークの設定や調整が行えます。

サンプルの初期状態では、1層レイヤーで活性化関数はシグモイド関数が使われているのが確認できます。

各モジュール(?)が一つの処理またはデータセットを表しているようです。上記の「Input」をクリックすると、レイヤープロパティーとして下記のような詳細の確認が可能です。このケースでは、Inputのデータセットなので、サイズ(1,28,28)やアウトプットのサイズなども確認が可能です。

また、右メニューにはレイヤーコンポーネントとして、使用可能なコンポーネントの一覧が表示されています。例えば活性化関数(Activation Function)を、今回のサンプルプロジェクトではSigmoid(シグモイド関数)が使われていますが、他のオプションとしてTanh(ハイパボリックタンジェント)やReLu(ランプ関数)なども使うことが可能のようです。

今回は特に変更はなく、デフォルト設定のSigmoidを使って次に進んでみましょう!

トレーニング(訓練)を実行

さて、かなり簡単ではありますが、ニューラルネットの構成も確認しましたし、データセットも確認できましたので、次は早速データセットを読み取ってトレーニングをしてみましょう。

コンソールの右上部にある「Train」のリンクをクリックすると、現在セッティングされているデータセットとニューラルネットワーク構成でトレーニングが行えるようです。

トレーニングが開始したら、上部メニューバーにて「TRAINING」のページへ移動してみましょう。(訓練が終了すると、自動で遷移します)こちらのページでは現在動かしているネットワークのラーニングカーブを確認することができます。

上の図が今回のサンプルコードの初期設定でトレーニングさせたラーニングカーブとなります。非常に綺麗なカーブですね(笑)。横軸の「Epoch」は最適化のための反復学習の回数を表しており、縦軸はコストを表示しています。学習を重ねるごとに綺麗なコスト現象が起きており、教科書のようなラーニングカーブが表示されているのが確認できますね。

またラーニングカーブの表の下には、コンソールの情報として各反復学習時のコストを文字として確認することも可能です。

評価(Evaluation)を行ってみよう

さて、訓練は完了されたので、次はこのモデルの評価を行ってみましょう。実際の評価を走らせる前に、評価(Evaluation)で実行されるデータセットの確認をまずしてみましょう。上部メニューの「DATASET」をクリックすると、このプロジェクトのデータセットの確認が可能です。

一番最初にこのプロジェクトの訓練データセットを確認していますが、今回は評価用(Validation)のデータセットを確認しましょう。「DATASET」のページの左メニューで「Training(訓練用)」と「Evaluation(評価用)」で切り替えが可能です。

評価データですが、Index(インデックス)、500個のMNISTの手書きデータ、正解ラベル(0が手書き数字「4」、1が手書き数字「9」)で構成されています。

評価用のデータセットの確認もできましたので、実際に評価処理を行ってみましょう。上部メニューで「EVALUATION」のページへ移動して、右パネルの「Evaluate」のボタンをクリックして評価処理を実行してみましょう。

評価処理ですが少し時間がかかります。私がやったときは約31秒かかりました

さて、評価処理が完了すると、下記のように評価用データセットに「y’(ワイハット)」として、今回のニューラルネットワークで予測した際の「予測値」が表示されています。

今回のサンプルはロジスティック回帰で、MNIST(手書き)の画像「4」と「9」を訓練させて、手書きの画像が「9」かどうかを判断するモデルでしたね。とてもシンプルなニューラルネットワークの構成を作り、実際に評価データを学習したモデルに落とし込んだ結果がこの評価データとなります。

復唱となりますが手書き画像が「9」の場合は「1」、「9」ではない場合は「0」と設定されています。なので、「y’」の値は学習したモデルが各手書きデータを読み込んで「9」と判断した場合は極力「1」に近い数値、「9」ではないと判断した場合は極力0に近い数値を出力しています。

(単純にy’に100掛けて、手書き画像が「9」である可能性(パーセント)として捉えることも可能ですね)

今回のモデルの正解率は?

「EVALUATION」のページ内にて「Confusion Matrix」へ切り替えると、評価の詳しい結果サマリーを確認することが可能です。

サンプルのニューラルネットワークの構成で訓練をした結果、このサンプルでは手書き画像「9」と「4」を95.2%(Accuracy=正解率)の確率で答えることが可能なニューラルネットワークの作成ができました。

また、訓練されたモデルが間違えたデータも表示されています。上記の表で「y:9=0」と表示されている行は正解ラベルが「0」(つまり手書き数字は4)を示しています。縦軸の「y’=0」で239と表示がされていますね。これは、予測値「y’」が0と予測した(つまり手書き4と予測した)正解数を出しています。

足して同じ行(y:9=0)の「y’=1」をみてみると、こちらは11と表示されています。この数字の意味としては、本当は手書きの4なのに、コンピューターは手書きの9と認識してしまった「誤回答数」を意味しています。

まとめ

無料枠が設けられたSonyの「統合開発環境Neural Network Console」をサンプルコードを交えて紹介しました。MLaaSのサービスは多数ありますが、最初の段階で日本のみを限定するサービスは非常に珍しいですね!まだ現状ではなぜか英語のみのインターフェースとなっていますが、将来的に日本語の対応も可能になれば、より使いやすくなるかと思います!

 

  • このエントリーをはてなブックマークに追加

無料で始める機械学習エンジニア入門

AIエンジニアへスキルアップをしませんか?コデクサでは、機械学習の初心者を対象に0から学べるコースを配信しています。

機械学習に必要な線形代数や統計基礎、さらに初歩的なアルゴリズムなどの無料コースを豊富に取り揃えています!

機械学習エンジニアへキャリアアップをしましょう!

コースを確認する

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)