ラベル 機械学習 の投稿を表示しています。 すべての投稿を表示
ラベル 機械学習 の投稿を表示しています。 すべての投稿を表示

2021年4月12日月曜日

ML4K(Machine Learning for Kids)で学習済みモデルを利用

  【what is this】ML4K(Machine Learning for Kids)は、機械学習を利用したアプリケーションの作成を容易にするものです。このブログでもいくつかご紹介してきました。今回は、その後のさらなる発展状況の短いサーベイです。

■Kidsは大学生も含む?ので、遠慮なく使おう!
 ML4KのKidsというのは、小学校低学年くらいと思っていました。しかし、ちょっとレベルが高いのでは?という内容も含まれています。では、Kidsって、何歳までなのか?調べて見ると、実は一般に、子供、若者、初心者の意味で使われており、親しみを込めて(あるいは少し見下げて)若者を指すらしい。もちろん、大学生も含むようです。実際に、"英辞郎on the web Pro"には、以下のような例文もありました。

    He is still acting like a college kid. ->あの子は行動がまだ大学生のようですね。
    too expensive for college kids ->学生には高過ぎる
    As kids reach high school, college, and so on ->高校、大学、社会人と成長するにつれ

 ですから、大学生も、自分に必要なAIアプリを簡単に作りたい場合は、遠慮なく利用してはどうでしょうか。それで研究が促進できれば素晴らしいです。

■ML4Kで使えるScratch3用のAI拡張機能(学習済みモデル)
 ML4Kは、もともと、IBM WatsonのAI機能をラップして使えるようにしていました。最近はさらに進化して、図1に示すように、色々なAI関連の学習済みモデルをScratch3で使えるようにしています。すなわち、顔や手や身体の状態と動作を認識するFace, Hand, Pose detectionなどが含まれます。
 また、自然言語処理分野では、Toxicity(好ましくない、不適切な表現)の認識などもあります。さらに、Pythonをある程度できる人は、TensorFlowを使った自分用のモデルを作成してここで使えるようにもできます。Pythonを使わなくても、GoogleのTeachable Machineで非常に簡単に独自モデルを作成することも含まれています。


■Hand detectionを使って指の折り方で数値を認識する
 上記のように、利用できる学習済みモデルは多いのですが、ここでは、「Hand detectionを使って指の折り方で数値を認識」をやってみます。実は、この課題は、Media Pipe Handsを利用してPythonでやったものです。それと同じことを、ML4Kの使い勝手を確認するために行いました。ただし、Pythonの場合は、0〜31まででしたが、今回は簡単にして、0, 1, 2だけにしてあります。もちろん、31までやることも可能ですが。
 図2は、これを実現したScratch3プログラムの主要部です。学習と予測(認識)の両方が含まれています。

 学習に必要なラベル付きデータは図3のようなものです。内容は、親指の先端と付け根、人差し指の先端と付け根などのポイントの座標値の組を収集したものになっています。例えば、親指だけを折った場合は、ボタン"1"を押すことで、図2のプログラム中のラベル1に対するブロックが反応して、図3のラベル"1"の枠に、その時点の指の座標値が自動的に格納されます。このように各ラベルのデータが揃ったところで、あるボタンを押すと(自動的に IBM Watsonが働き)学習が行われます。

 学習が済んだ後に、改めてカメラに向かって指を折り、図1の「予測(認識)」ブロックを起動させます。すると、図4に示すような認識結果がえられました。図では、"1"と"2"がそれぞれ正しく認識されています。



■感想 
 AIの教育を支える環境は種々あると思いますが、このML4Kは、大学生レベルの人にも、すばやく自分のアイディアを実現するプロトタイピングに大いに役立つのではないでしょうか。その後、本格的な課題に取り組む場合は、ここでの経験が生きるはずです。また、低学年のAI教育において、少しでも各自のアイディアを取り入れた演習をしやすくなるように思われます。

2020年12月17日木曜日

神奈川工科大学で講義:自然言語処理と機械学習(事後編)

 【what is this】神奈川工科大学_情報工学科向けの「入門:自然言語処理と機械学習」講義後の報告です。前回の続編になります。現状の小生にとって、今年のn大ニュース(n ≦ 3)入りとなりました。 

■久しぶりに約140名に90分講義(講演)
 前回記載のとおり、90分のオンライン講演を実施(2020-12-10)。対象は、約140名の2年生ですが、先生方や大学院生にも聴いていただきました。このコロナ禍ゆえ、自宅からZOOMを利用した講演でしたが、特にトラブルもなく終えることができました。
 熱心に聴講し質問もしてくれた学生諸君に、そして準備された担当の先生、応援して質問もしていただいた先生方に感謝したい。当方としてはここ2ヶ月間、構想を練り準備してきた甲斐があり、たいへん嬉しく思っています。下図のスクリーンショット、どこか良い雰囲気を醸し出しているような気がします。

2年生約140名と、院生、先生方にも参加していただいた

■質問が出るのはオンラインのメリット
 上図右欄に見えますが、講演後に学生諸君から3件ほどの質問がチャットで寄せられました。対面授業では通常、ほとんど出ませんので、これは、オンライン授業の良い点のようです。ただ、質問時間は限られていたので、その場でパチパチ素早く質問を正確に打つのは難しかったと思います。後でメールでも質問できるように、当方のメールアドレスも講義スライドに記載はしておきました。

■その場の反応が分からないデメリットも
 一方、受講状況が掴めません。私は、ユーモアというか、「ここで学生諸君を和ませよう」と、スライドの何カ所かに仕組んでいたものがあります。それに対する反応が分からないのです。対面であれば、大人数の場合でも、ちょっとどよめいたり、笑いが起こったりするのが分かります。それが知りたいのです。それは5カ所位あったのですが、例えば、以下のような所でした。「ここじゃない!ここ!(詳細はこちら)」、「日曜日は銀行はやっていない!(詳細はこちら)」It happens inevitably.

ここで、小さなどよめきや笑いが起こるのでは...

■後日提出の受講レポートから反応を掴む
 ですが、この講義受講ではレポート提出が義務づけられているため、後で状況を掴むことができました。熱心によく受講してもらったことが分かりました。今後の参考にしたい。残念ながら(公式レポートにはそういうことは書かないものだが)、上記の笑いについて触れた学生はいませんでした!ちょっと残念。以下に、学生諸君からの反応をいくつか示します。(原文の意味を損なうことなく、抜粋、編集したところがあります。)
  1. メモは取ったが、講義資料が公開されていなければ、後で理解を深めることは困難だったが、それがあったので非常に助かった。((注)スライドが役立って良かった。)
  2. 資料を見返してしっかりとまとめたメモと見比べなんとなく理解するところまで行けたことは、個人的にとても大きかったです。((注)予習して臨んだようです。)
  3. 内容だけを見たらすごく難しいものを簡単に見せる工夫や見る側が興味を持つようなしゃべり方をしていたので参考にしたいと思いました。((注)よく分かってくれました!)
  4. 最初は基礎的な部分から、徐々に内容を複雑にしていって、尚且つ前のスライドでその話に持っていきやすいように、しっかりその情報の開示・整理を行っていたために理解しやすくて、((注)そこまで、よくぞ分かってくれました!「以心伝心」という言葉が頭に浮かんだ。)
  5. 退職後も自分の興味で調査や実験をしたという事を聞いて、私も自分自身で動く行動力や何にでも興味を持つ好奇心を忘れないようにしたいと思いました。((注)こんなところにも気がついてくれました!)
  6. 自身が気になったから実際に行ってみたという動機や実体験を元にした説明だったので、内容がわかりやすく伝えたい事も明確で、全体的にとても良かった((注)そのとおり。自分でやってみること!)
  7. Google翻訳を使っているが((注)そういう学生が非常に多かった!)、それに関連する技術や動向の概要が分かった。機械翻訳がこれほど凄い技術でなりたっているとは思わなかった。
  8. 数学の知識が不足しているのでそれを身に付けたい。((注)講義では、誤差逆伝播や微分等については直接言及しなかったのだが、学生は、数学的手法を感じ取った!)

■時間配分に気を配る
 スライドは全部で62枚ありました。90分のうち、どの辺りにどの位時間をかけるのか、受講者もそれが分かると落ち着いて聴けるように思いした。少し余裕を持った時間配分とするのが良いと思います。結果としては、ある先生から(そして学生のレポートの中にも)、「ほぼ、時間配分どおりでしたね」と言われて、ちょっと安心。

事前に決めておいた時間配分(配布スライドにも記載)

2018年10月28日日曜日

私には嬉しい「Javaで自然言語処理」

 機械学習全般に、そのソフトウェアの多くにはPythonが使われており、この分野ではそれが必須となっているようです。確かに、行列や数値計算やグラフ出力などで強力な機能を備えており、簡潔にプログラムを記述できます。ですから、私もPythonを使って学んだり、プログラムを書いたりしています。

 しかし、一方では、長年使ってきたJava言語の魅力は捨てがたいものがあります。そんななかで、小生が最近取り組んでいる「自然言語処理と機械学習」をJavaで学ぶという書籍が発売になりました。内容はとても精緻に書かれている印象があります。当然ながら、広く使われているMeCab、CaboCha、LIBSVM、word2vecなどのツールやライブラリも、Pythonの場合と同じように、Javaと連携しています。私にとっては、とても嬉しい書籍なので、これも学びます。

私にはうれしい書籍が発売になった