やること
※2020/10/21作成、2020/11/30追記あり
先日、株式会社MatrixFlowが提供するプログラミング不要のAI構築Webサービス「Matrixflow」の無料版を試してみました。概要についてはそちらをご参照ください。
今回は有料版(ベーシックプラン)を試してみます。とにかく学習レシピが編集できるのが楽しみですね。このプランは下位プランと比べ、保存容量が大きい以外に次の特徴があります。
- 時系列解析レシピが使える
- 人事解析レシピが使える
- 学習済みAIのRESTful API化ができる
今回も説明書はほとんど読まずに突撃してみましょう!
※筆者とMatrixFlowとは一切の利害関係がありません。
MatrixFlowとは
GUI(マウスクリック)でサクサクとAIができるWebサービスです。回帰、分類などの基本的な機械学習に加え、画像のCNN、自然言語処理にも対応しているようです。
使用したデータ
CNN画像分類に用いるデータ
今回も、過去の勉強会で配布された10種のケーキ画像のデータセットを使いました。学習/テストデータともに配布プログラムであらかじめ128*128*3chにリサイズしておき、フォルダ名は英語に修正。
MatrixFlowが指定するフォルダ構造に直してzip化し、データをアップロードします。
時系列解析に用いるデータ
筆者のTwitterの投稿データを使いました。Twitterの投稿データはこちらのサービスで取得できます。
2020/4/1~2020/10/19の約6ヶ月間の投稿データをcsv形式で得ました(分割取得して合体すること)。csvには「投稿日時」と「インプレッション数」の列が含まれます。csvの文字コードはUTF-8を指定すること。(ANSIだとアップロードエラーになりました)
テキスト分類に用いるデータ
筆者のTwitterとFacebookの投稿データを使いました。それぞれ最新の投稿40件を、MatrixFlowが指定するフォルダ構造下にtxt保存していきます。
Twitterは上記のcsvファイルから「投稿内容」をコピペして一つ一つtxtに保存しました。もちろんUTF-8指定です(Windowsだととても面倒くさい)。Facebookは自分のタイムラインから40件をポチポチコピペしてtxtに保存しました。
CNN画像分類
データ管理~前処理・データ解析
画像データはシステム上で前処理ができません。あらかじめリサイズなどしておく必要があります。
レシピ管理
有料版はレシピが作成・編集できます!とりあえず過去の勉強会とまったく同じ層構成で組み立ててみました。
学習
いろいろな設定項目があり、過去の勉強会と同じ設定を目指しましたが、明示的に設定できなかった項目は以下でした。
- loss=’categorical_crossentropy’
- optimizer=’Adam’
lossはクラス分類なので適当にやってくれていると思いますが、optimizerは何を使っているのでしょうかね。SGD?Adam?
上の設定で学習開始したら、10分くらいでブラウザがクラッシュしました。「評価間隔」のところに注意書きがあり、間隔が細かいと重たくなるとのことです。「学習データ数 / バッチサイズ」を設定すれば1エポックに1評価になります。
学習曲線が出ました。参考までに勉強会での学習曲線(正答率)も並べておきます。
各クラスを10倍に水増ししたデータでも学習してみました。水増しは勉強会のプログラムで行いました。
水増ししたほうが良い結果になりました。自動停止機能がないのはやはり辛いです。ちなみに100エポックにかかる時間を3つの環境で比較してみました。
40枚*10クラス | 400枚*10クラス | |
MatrixFlow | 4分56秒 | 46分49秒 |
デスクトップPC(i7-6700T) | 9分6秒 | – |
Google Colab(Tesla T4) | 14秒 | 2分1秒 |
T4と比べてしまうのはさすがに酷ですが、MatrixFlowは「速いCPU」程度だと思います。深層学習の教師データって基本的に何万枚~何百万枚なので、CPUの速度だとどうなんでしょう・・・(混雑度や資金力によって変わるのかしら?)
学習済みAI管理
テスト画像もアップロードして、推定しました。1枚目が水増しなし(計400枚)、2枚目が水増しあり(計4000枚)です。初めて見る画像に対して、それぞれ正誤ありました。
時系列解析
データ管理~前処理・データ解析
「tweet_all.csv」というファイルをアップロードしました。システム上で前処理ができるようですが、今回用いる「投稿日時」と「インプレッション数」には欠損等はないので、触らずに行きました。
レシピ管理
MatrixFlowの公式ブログがあるので、参考にしました。
デフォルトで年周期と週周期の解析はされるようなので、日周期と時周期を追加しました。
学習
「投稿日時」から「インプレッション数」を推定するように学習させました。
学習は10秒で終わりました。何回かやっていて気がついたのですが、学習開始を押してから、学習環境を構築中~に数分かかることが頻繁にあります。学習自体は10秒なのに。
学習済みAI管理
周期性モード「乗法的」「加法的」のそれぞれの結果が表示されるので、気に入ったほうを選ぶと良いとのこと。とりあえず「乗法的」を見てみます。
トレンド予測
8月の山を確認したところ、東工大の爆破予告に関する情報でした。紫線が予測線ですが、細かく拡大して見られないので予測できているのかなんとも言えません。
週周期
日周期
週周期を見ると、横軸が一部意味不明になっていますが、水曜日の午後と土曜日の午後に多くのインプレッションを稼いでいることがわかります。日周期も横軸がバグっていますが、夕食の時間帯はインプレッションが少なそうなことがわかります。日周期は点が少ないように見えますが、本当に期間全体に対して周期を見出してくれているのでしょうか・・・?6ヶ月分(730行)のデータですよ。
ただ、解釈には注意が必要です。そもそも皆がTwitterを見ている曜日・時間帯に偏りがあるはずなので、それを差し引いて考察しなければならないと思います。
テキスト分類
データ管理~前処理・データ解析
「text_train」というフォルダをアップロードしました。FacebookとTwitterの投稿が各40個(UTF-8形式)入っています。投稿中にURLが入っていても後で除外できるようです。 システム上で前処理はできませんでした。
レシピ管理
デフォルトで入っている「分類-自然言語(tfidf)」のパラメータを見てみます。
URLやメールアドレスを取り除くという基本的な処理はありがたいです。形態素解析器はMeCabやSudachiをよく耳にしますが、まずはMeCabが対応。ストップワードは解析から除外するワードで、本来はFacebookやTwitterの投稿で普遍的に使われるワードを指定すべきなので予備解析が必要です。今回はデフォルトのままで行きます。その代わりといってはなんですが、出現頻度が1%または0.05%以上のワードは除外するように設定しました。
学習~学習済みAI管理
学習はすぐに終わりました。
出現文書率が1%以上を除外した場合(10%以上でもほとんど一緒、つまり特に除外できていない)
出現文書率が0.05%以上を除外した場合
ワードクラウドが見られるだけで嬉しいですね。普遍的に出現するワードをしっかり除外してやると、「研究」「学習」「美味しい」といった高尚なワードが並んでいます。「d」ってなんだろう。
推論
5秒で考えたテスト投稿がFacebookなのかTwitterなのか、推定してみます。
1番と2番は逆のつもりだったのですが、学習データが少ないので気にしません。筆者は普段から特定のコンビニを批判するTweetをしているので、4番はしっかりTweetと判定されました。やったぜ。
使い勝手・感想
データの前処理を含め、有料版を4時間くらい触ってみました。やはりマニュアルをほとんど見ずにここまでできたのは、サービスとして素晴らしいことだと思います。第3次AIブームも成熟してきて、こうしたツールが登場して裾野まで普及していく瞬間を見ている気がします。「プログラミングなしでAIをやってやろう」という、誰もが一度は夢見たサービスを実際にリリースしてしまっているガッツは、良い意味で無謀な感じがして好きです。
利用規約の確認
MatrixFlowに限らず、商品やサービスの利用規約は常にご確認ください。もう一度言います。利用規約は頻繁にご確認ください。
>当社は、本規約を変更できるものとし、本規約を変更した場合には、登録ユーザーに当該変更内容を当社の定める方法で通知するものとし、当該変更内容の通知後、登録ユーザーが本サービスを利用した場合又は当社の定める期間内に登録取消の手続をとらなかった場合には、登録ユーザーは、本規約の変更に同意したものとみなします。)
どうやって通知するかとか、期間内ってどれくらいの期間なのかとか、気になることがあったら問い合わせておいたほうが安心ですよ。
余談ですが、筆者はあるWebサービスで規約に「当該月の利用料は当社の定める方法で通知するものとし、その後、当社の定める期間内に解約の申し出がなかった場合は継続契約に同意したこととみなします」といった感じで書かれているものを利用していたとき、早朝のメール通知から40分でクレカ決済されたことがあります。「起きてないし!40分は早すぎない!?」とクレームを入れたら、「規約に書いてあるので」と言われました。
筆者はあちこちで言っていますが、利用規約というのは、読まないと際限なく一方的に悪くなっていきます。ちゃんと読む。不明点は問い合わせる。納得できなければサービスを購入しない。消費者のリテラシーです。ちょっと話が逸れました。
MatrixFlowの個人情報取扱いやデータの権利帰属あたりは大丈夫だと思います。(2020年11月30日確認)
MatrixFlowの使い所
以下厳しい言い方になってしまいますが、そもそも他のサービスでも実現できていないことですので、理念自体は素晴らしいと感じています。
無料版の記事にも列挙したような「かゆいところに手が届かない」感じは、有料版でもさほど解消されませんでした。有料版の方が学習の幅は広がっているのですが、そうではなくて、現時点では使い所が見出しにくいサービスであると感じます。その理由は以下の通りです。
MatrixFlowの
- 前処理(eg. 画像データの前処理、テキストデータのストップワード)
- 学習レシピ
- 可視化内容
- 他の解析との連携(eg. 結果の出力ができない)
には限りがあり、また、学習速度もCPU並ですので、「いろいろな条件で実験してみよう」という要求には応えられていません。基本的~発展的までいくつか利用シーンを想定してみても、使い所あるだろうか?とお節介ですが思ってしまいます。
具体的には、初学者にとっては、レシピをどう編集したら良いか分からない、学習に時間がかかるので条件を変えて繰り返し試せるわけでもない、どうしたら良いのでしょう。一方で、自分で前処理ができて学習条件も見当がつくような人は、学習もRやPythonで書いてしまうのでMatrixFlowは使わない気がします。。(帯に短し襷に長し)
いろいろ考えましたが、「AI学習の雰囲気を掴んで専門家との議論に備える」「誰かが作った良いレシピで学習を経験してみよう、寝ていれば終わるしね」という使い方しか思い浮かびませんでした。。
総評
ちなみに筆者の回りには「コード書きたくないけどAIやりたい」という人がそこそこいるので、もしかして刺さってる?という気持ちも少しあります。今後の発展に期待大といったところです。偉そうで本当にすみません。。