鉄道模型工作実験室

Nゲージ鉄道模型に関する工作や実験を行っています。

わたしの作った AI はおバカさんです

 今、機械学習の実感をつかむため、インプレス社の「いちばんやさしい Python 機械学習の教本 第2版」のChapter4 「日本語の文章を生成しよう」に挑戦しています。その内容はマルコフ連鎖の辞書データを使って文章を自動生成する方法です。


 まったくの初歩的な自動生成プログラムですが、そのロジックをみると、文章の構成を学校で習った名詞、動詞、修飾語などの文法に従って解析するのではなくて、単語のつながりをその出現回数を追って行って、データ化するという確率論的なロジックなのである。


 そこで実験屋として、教本に従って作成したプログラムを使って、簡単なテストを実施してみました。その結果を下のイラストに示します。

 教本のプログラムをそのまま使用して、上記に示す3種類の文章をしっかりと覚えるようにと3回ずつ覚えさせました。ビールメーカ名とその銘柄である。
 しかし、プログラムを走らせて文章を自動生成させたが、その正解率はなんとたったの 30%であったのだ。なんと私の作った AI は、お馬鹿さんなのだろうか!
  ************************************
 でも、驚きません。この自動生成プログラムのロジックを理解しているからです。しっかりと覚えさせた学習内容をもとに作成されたマルコフ連鎖の辞書データ、すなわちmarkov_dict の内容をみると、”生ビールは” に続く単語は、3銘柄共に、3:3:3の割合で出現させよと命令しているからです。単に、出現回数の確率だけで決めていっているからです。肝心の ”生ビールは” の前の単語であるメーカー名は完全に無視しているのです。
  ************************************
 メーカ名をキーにし、銘柄名を値とする辞書リストを作って文章を生成するロジックにすれば、正解率は100%となるのです。しかし、これでは人間が書いたプログラムであり、機械が自動的に学習したプログラムとは言えません。今回使用したプログラムのロジックでは、目的とする文章の生成には不十分なロジックであり、さらに何らかの改良や工夫が必要であると言うことです。
 世間で活用されているAIプログラムでは、様々な工夫と改善が織り込まれて、初めて活用できるレベルまで進化させたと推測しますが、もう80を超えた後期高齢者にはついていけないようです。
 でも文字認識や顔認識などは、どんなロジックを使って判断しているのか?  興味ありますね。!(^^)!

新しいバージョンでの対応方法

Pythonの新しいバージョンでの対応方法

先に報告したWEBスクレイピングにおける学習用サイトのアクセス拒否について、出版社からトラブル時の対応方法を教示して頂きました。


Pythonのバージョンが3.11の場合には、

  • 方法1: requests のバージョンを指定する。
         pip install requests==2.29.0
  • 方法2: urllib3 のバージョンを指定する。
         pip install 'urllib3<2' requests


方法1で試してみました

結果は問題なくアクセスできました。インストールされたrequestsのバー上ンは 2.31.0 で、urllib3のバー上ンは 2.0.3でした。

方法2で試してみました

こちらも問題なくアクセスできました。こちらでインストールされたrequestsのバー上ンは 2.29.0 で、urllib3のバー上ンは 1.26.16でした。


さすがは専門家ですね。自分のように逃げの一手しかない初心者にはありがたいことです。
誠に、ありがとうございました。

原因(推定)が分かりました

先に報告したWEBスクレイピングについて、学習用サイトのアクセス拒否の原因を自分なりに推定しました。原因は使用したPythonのバージョンが新し過ぎたのでした。


ノートパソコンでの検証結果

Wifiルータを通して接続しているノートパソコンを使って検証しました。このパソコンには自動測定のために、すでのPythonをインストール済みでした。そのバージョンは3.10.7でしたので、さっそくアクセスしたのですが、すんなりとOKとなりました。
そこで、このPythonを削除して最新のバージョンに変えてみました。すると、今度はNGでした。
その時のスクリーンショットを下記に示します。

長いエラーコード最後には、

と表示されていました。SSL関係のエラーでHTTPSのコネクションが成立しないものと思われます。
使用したアプリは異なっていますが、実施していることは同じなので、自分としての結論は、次のように考えました。

  • インプレスさんのサイトは、今のところ学習用としては使用できない。
  • 使用するのであれば、古いバージョンのPythonを使用すること

自分は、この方面の専門家ではないので、間違っているかも知れません。

対処方法

使用するPythonを、以前の古いバージョンとすることでしょうか。