"Watson Studio で始める 機械学習・深層学習 ノンプログラミングでやさしく体験" -HINT&TIPS-

#**Watson Studio で始める 機械学習・深層学習 ノンプログラミングでやさしく体験 赤石雅典著 をやってみました**

書籍をみながら、IBM Cloud の Watson Studio を一通り触ってみました。

最初に触るのには親切に出来上がっている本ですね。とはいえ、私みたいな文系人間には理解に時間がかかりそうな部分もありましたが・・・^^;

さて、2019/02 の時点で、すでに本の内容と IBM Cloud の画面が変わっていました。すでにこれを書いている最中にも、画面のアップデートがあったりして、この情報もいずれ古くなってしまうと思われます。クラウドの良いところでもあり、悪いところでもありますね。

画面もそうですが、やりながら詰まったところがあったり、ちょっとした hint&tips がありますのでシェアしておきます。

出版社からもサポートの情報が公開されました。あわせてご確認頂ければと思います。
http://www.ric.co.jp/book/contents/pdfs/11601_support.pdf

##最初に
**・サンプルファイルのダウンロード先が変更になりました**

出版社のサポート情報に変更先が記載されています
http://www.ric.co.jp/book/contents/pdfs/11601_support.pdf

**・サポート契約をしているのであれば、IBMのサポートは積極的に利用すると良い**

IBM Cloud のサブスクリプション（or クレジットカード契約） + アドバンストサポート契約を購入していると、サポートの回答が結構早いです。

特に英語がわかる人は、チャットやチケットでばんばん質問できます。契約をしていると日本語でも聞けますが、英語のほうが回答が断然早いと思います。私もわからないところは素直に聞きました。

アドバンストサポートの情報はこちらです。
https://www.ibm.com/jp-ja/cloud/support#tab_940976

ライトアカウントでも、無料で問い合わせが出来るのですが、回答がかなり遅くなることがあります。とはいえ、問い合わせ先があるってのはありがたいですね。

では、本題。

##Chapter 2 IBM Cloud と Watson Studio
**・p80 Create Project でプロジェクトを作成する部分で、Complete がでてこない**
代わりに Standard を選べば OK

**・p82 Add Service で Spark がでてこない**
Watson Studio のサービスを作る**場所**が原因。現在 Watson Studio は東京にサービスを作ることが出来るようになっているが、まだ Spark は東京に作れないため、Watson Studio の add service 上に表示されない。他のサービス含め、基本ダラスに統一しておこう。

**・p82 Existing に各サービスが出てこないことがある**
一つは、データセンターがダラスと東京などまたがって配置されていることが原因

他には、権限（リソースグループ・CloudFoundry 組織）が関係して表示されないことがあるようです。そのあたりの設定を見直したり、どうしても出てこないときには、新規で作ってみると出てきたりします。

サブスクリプションを利用いる場合で、どうしても出てこないという場合には、 Watson Studio の Access Control の Collaborator にIBM Cloud のマスターアカウント（最初に登録につかったユーザー）を追加して、そのユーザーにサービスを作ってもらったり、登録してもらったりするとうまくいくことがあります。

**・p83 add services にMachine Learning がでてこない**

p82 の画面ショットには、Add Service の下に Machine Learning の文字列がみえるのですが、実際にはそこにはありません。

p83 の中には、[Add Service - Watson - Machine Learning] を選ぶと書かれているとおり、Watson を先に選択するとその先に Machine Learning があります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/225630/2426bba3-7e31-738b-256c-fcf0e356a12e.png)


## Chapter 3 検査データから病気を判定する
**p91 でアップロードした csv ファイルを asset から remove して、再度アップロードしようとすると、File Already Exist と怒られる**

何かのはずみで、もう一回やってみようとか思ったときに、Asset から Remove するだけではファイルは削除されません。ファイルを削除するには、データをD&Dでアップロードした Load タブの右側の Files の中から削除する必要があります

![image.png](https://qiita-image-store.s3.amazonaws.com/0/225630/cdc51b99-5073-1447-d922-557fa25115ad.png)

**・p93 Add to Project に Model がない**
画面も名前も変わってます。Watson Machine Learning Model を選びます

![image.png](https://qiita-image-store.s3.amazonaws.com/0/225630/ae648280-2830-89a5-6905-14e8a142b1fa.png)

**・p96 Data Refinary なんかめんどくさい。エクセルで直したほうが早いんじゃね？**

私も最初はそう思いました。が、10GB とかでかいデータを直す度に IBM Cloud にあげたりするのも大変ですし、refine したデータを複数人で共有できるので、それなりに便利なんだと思われます。

エクセルでちゃちゃっと直せるくらいのデータならそっちのほうがいいのは間違いないでしょう。

**・p103 Model Builder で Estimator がでてこない**

モデルを作成したときに、Automatic を選んでいることが原因。モデルは最初に p93 で作成しているが、Estimator の設定は p102 でとても離れているので気がつかないということが起こりがちです。（というか、起こった）。モデルを作成するときに Manual を選択すると、Estimator でモデルを選べるようになります。

**・p103 結局、演習ではどのモデルをつかってるの？どこでわかるの？**

p106 の画面の Selected Estimator に書かれているのが使われたモデルです。その下の、Other trained estimators ってのが採用されなかったモデルかと

**・p108 慢性腎疾患なしケース１の人が、本では慢性腎疾患なし(nochk) とありますが、私の watson studio 君は、慢性腎疾患あり(chk) と言ってます。**

私の環境ではたまたまそうなったようです。患者様には大変恐縮ではございますが、ご愁傷様です。出版社のサポートサイトにはその理由の追記があります

**・ibmcloud コマンドを使っている最中に、pip に怒られます**

You are using pip version 9.0.1, however version 19.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

pip にアップグレードしろといわれますが、とりあえずアップグレードしなくても書籍は完遂できました。

**・p117 エンドポイントって何を入れれば良い？**

聡明なあなた様は、google 先生にエンドポイントってなに？とお問い合わせ頂いたりしていると思いますが、そこで教えてもらえるエンドポイントは、きっと https://api.ng.bluemix.net かと思います。

しかしながら、それはIBM Cloud API エンドポイントと言います。これを指定すると、p118 のウェブアプリケーションは動きません。ここでいうエンドポイントは p111 で調べていただいた、**スコアリングエンドポイント** のことでございます。

*7ページ前なんて、そんな昔のことは覚えていない* by ハンフリーボガード

書籍の指示通りでしたら、Webサービスの deployments の implementation の implementation の中 http:// から始まるすべてを利用。他には、ダッシュボードから CloudFoundry アプリケーションを開くと、コマンドラインから作成したアプリケーションが見えるのでクリック、ランタイムの環境変数の一番下のユーザー定義の中にSCORING_URLがあります

![image.png](https://qiita-image-store.s3.amazonaws.com/0/225630/32167bb0-425f-aacf-729b-bec5ad5f80df.png)

**・p118 やっぱりウェブアプリケーションが動きません**
bind に失敗しているかもしれません。ibmcloud コマンドで作成した CloudFoundry アプリをIBM Cloud のダッシュボードから開き、環境変数のリンクを選択。中にある VCAP_SERVICES が空なら bind に失敗してます。

他には、6章の p224 にデバッグ方法が書かれていますので、そちらをご覧ください

*100ページ以上先？そんな先のことは分からない* by ハンフリーボガード

**・p121 db2 warehouse on Cloud で create database すると、テーブルスペースが 4K に収まらないとか権限ガーとかいうようなメッセージで作れない**

エラーメッセージメモし忘れました。すみません。原因ははっきりわからなかったのですが、db2 warehouse 側のサービスクレデンシャルがなかったことに気がつきまして。手動で作成したら create database できました。（特に user / password をどこかに転記したということもなく）

ただ、あとで DB 作り直して再現させようとしても、サービスクレデンシャルなしで craete database できてしまったので、対処方法として正しかったのかはわからないです。

サービスクレデンシャルは IBM Cloud のダッシュボードから Cloud Foundry に表示されるご自身で作られた db2 warehouse をクリックして、[サービス資格情報]タブの[新規資格情報]で作成できます

![image.png](https://qiita-image-store.s3.amazonaws.com/0/225630/dbe8e627-70b5-4dcd-6869-81740e917dba.png)

そもそも、インスタンスとかいらんの？とか、結局テーブルスペース作ってないけど？とか思ったりしましたが、気にする必要はない模様です。

**・p123 Watson Studio 上で Db2 Warehouse on Cloud の Connection を作るときに、既存の Db2 Warehouse が表示されない**

私の環境では、あらかじめ作成しておいた db2 warehouse のサービスは表示されませんでした。(cloudant はでるんですが、なぜか db2 warehouse がでません・・・）

下のアイコンから db2 warehouse を選択すれば、新規に connection が作れます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225630/98995446-506d-c196-5bcc-a540e9bd3b79.png)

自分で作成した場合、データベースの接続・設定情報は自分で設定しなければいけません。その情報はサービス資格情報の中にあります。

注意が必要なのは、データベース名です。これは、db2 warehouse の資格情報の "db" の値を利用します。書籍中で create database した KID_SUM のことではありません。

書籍の画面ショットにあるのと同じ通り、Database 名はデフォルトでは "BLUDB" となります。他、hostname username password も db2 warehouse の資格情報の中にあります。（資格情報へのアクセス方法は少し上に書いてあるので参考にしてみてください

##Chapter 5 Watson Studio 上の深層学習モデル開発

**・ノードの中で何をやってるかちんぷんかんぷんです**
p172 に利用可能な部品ノード一覧があります。この一覧から、本書記載箇所に戻って説明をみると理解が進むと思います。

**・p174 ノードからの接続線を出すのが難しいって書いてありますが、不器用な私でもできますか？**

ビビッて構えたのですが、そんな難しくなかったです。手をプルプルさせながら練習する必要が！？とも思ったのですが、杞憂でした。たぶん改善されたんだと思います。

**・p189 ICOS (Cloud Object Storage）のデフォルト値が書籍と違います**

今のデフォルト値は us-geo ではなく、jp-tok になっていました。日本で利用しているからと思われます。これは、us-geo への変更が必要です。

**・minst....?? はて。**

そんな SE なあなたもきっと minst とか書いちゃうはず。

p208 あたりからsingle-cnn-on-**minst** という名前でプロジェクトとかなんやら作っているところとか、文字なり画面ショットに minst とかちらほらと登場するのですが、正確には **mnist** のはず。

あ。モデル名とかプロジェクト名は別に minst でも hogefugapayo でもなんでも動きますが、ファイル名が間違えているところが数箇所この後出てくるので、そこだけ注意。

**・p211 修正したモデルの精度が出ない**
Learning Rate の値を小数点で一桁間違えたりすると、精度が出ません。 <- 私間違えてました

あと、修正したモデルを、v2 とかつけずに同じモデル名で保存したときも、精度が出なかったような気がします（気のせいかもしれません）

**・p218 "7" の4次元 Numpy のテストデータのファイル名がインストです**
誤：nminst-7-test.json
正：mnist-7-test.json

どこにあるか見失いがちですが、xxxxxwts-DL_xxxxxxxx.zip の ch6\ の下にあります（ダウンロードさせてもらったファイルなので、一部伏字にしています）

**・p220 手書き数字認識ウェブアプリケーションダウンロードファイル名がインストです**
誤：wml-minst-sample.zip
正：wml-mnist-sample.zip

## Chapter 7 動物・乗り物の写真分類を深層学習で行う
**p236 ぜんぜん学習が終わりません！**
・Number of optimizer steps は本文で**5**が指定されていますが、画面ショットでは **10** になってます。画面ショットを見て設定した方は、たぶん意図したより長い時間かかっているのではないかと思います。

そもそも 5 でも終わるまで数時間ということですので、時間はかかるにはかかります。

**・p220 6章のウェブアプリケーションも動かない**
ここの Qiita の chapter 3 を参考になさってください

・SCORING_URL が間違っている 
・bind に失敗している

私は ch6 のアプリケーションを bind するときに、間違えて ch3 のアプリケーション名をいれてしまい、失敗してました。

## 最後に

Qiita を見て頂いている方に話すことでもないですが、あくまでも自分で試した結果の HINT&TIPS なので、正しいとも限りません。ご理解の上ご利用ください。

IBM Cloud は無料から使えるし、GPU も少量ならただで使わせてくれるし、よい機械学習の練習場所かと思います。

赤石さんの本完走された後は、IBM Code というサイトを訪れてみるのはいかがでしょう。日本語に翻訳されたチュートリアルが80個くらい用意されています。
https://developer.ibm.com/jp/technologies/artificial-intelligence/

英語が怖くないという方は kaggle がいいのでしょうが、ibm code の英語版もあり、日本語以上のチュートリアルが用意されておりますので、こちらを見てみても良いかと思います。
https://developer.ibm.com/technologies/artificial-intelligence/

気が向いたらまたアップデートするかもしれません。良い機械学習ライフをお送りください