平成時代には、ネットワーク活用の重要性について検討を進めてきました。令和時代には、AI技術があらゆる産業の重要基盤になることが予想されています。ここでは、このような時代に相応しいAIプログラム学習基盤について検討してみます。
政府CIOポータルのページで公開された、全国医療機関の医療提供体制の状況データを使って見た。JSON形式で公開されているので、非常に簡単に地図上にプロットすることができた。この地図は、下記の学習アプリの例題で作成していた、水害データの機能評価用をベースにしたので、OpenStreetMapや電子国土などをボタン操作で切り替えて表示することができる。
これは、コンピュータが世の中に存在しなかった時代に生まれ、パソコンを知らずに大学生活を送った筆者が作成した学習アプリの話です。その後ミニコンピュータから始まり、マイコン、パソコン、インターネット技術が出現し、時代も昭和、平成、令和と変わりました。音響カプラーから5G時代になって、ネットワーク上でコンピュータが大活躍できる時代が身近になりました。しかし、適切なプログラムがなければ、だだの箱であることは今も変わりません。そこで、今まで集めた知見をまとめて、令和時代に対応できるAIプログラミング学習アプリを検討してみました。プログラム言語は多々ありますが、ここではAIプログラミング分野で、最も生産効率が高いと評価されている、Python言語を採用しました。
先ず下図を見ていただきたい、開発した学習アプリを開いたときに表示されるウィンドウです。OSはWindows 10 専用で、初心者や高齢者が扱うことを考慮して、テキストの入力とマウス操作のみで、あらかじめ組み込まれた様々なプログラムを選んで処理するだけの構成になっています。
インターネット上で、Pythonについての評価を調べてみると、コーディングが容易でAI処理関連のモジュールが充実していることが指摘されています。上記の機能評価項目にも、多数の公開モジュールが使われています。実はこのモジュールの豊富さ、機能の高さがコーディングの容易さ、高度の解析や処理に繋がっています。図1の全例題を実行するには、100以上のモジュールが必要になります。これらのモジュールには、APIやチュートリアルが付属しています。印刷すると数百ページに渡るものもあります。本アプリではこれらの情報はネットから入手することにして、閲覧ボタンで、ブラウザに表示できるようにしています。学習者の便をはかるため、閲覧ボタンのほかにもいくつかのコメントや補足文の表示機能が含まれています。図5はプログラム例題を表示した直後のウインドウの状態です。左パネルに例題のプログラムコード、右パネルは通常は空白ですが、ここでは補足文が表示されています。更に図左下の説明文メニューが空白でない場合には、説明文を左パネルに表示することができます。パネル表示にはリッチテキストが使えるので、図や色付テキストで強調できます。説明文がHTML文であれば、ブラウザ表示にするなど、学習者の理解を助ける付加機能が盛り込んであります。これらは、初期設定データにより自由に変更できるので、学習条件に合わせた編成にすることができます。左パネルに説明文を表示させると、例題プログラムが消えてしまいますが、これはPボタンを押せば復活します。
次に本アプリの他の有用機能について紹介しておきます。それは右パネル下にあるテキスト文の保存と保存されたファイルの読込機能です。これによって、修正したプログラムの再利用が可能になります。小規模の写経プログラムから出発して、いくつかの分割プログラムを作成しておき、後でまとめて大規模なプログラムに編成したり、逆に図1のプログラムをベースに図3のような機能限定プログラムを編集することができます。右パネルに表示されているテキストを使って、日付をファイル名に変えたメモを残すことができます。これは、マニュアル作成、論文や報告書の作成に使うことができます。
このアプリはPython学習用として作成されていますが、状況によっては他のプログラム言語を比較する必要があるかも知れません。そのような場合にも対応できるように、我国で良く使われているruby言語と、現在発展途上であるjulia言語に対する機能評価用ボタンも設けてあります。またCUI用に書かれたコードを検討するために、コマンドプロンプト用のボタンも用意してあります。
ここで、本アプリに含まれる幾つかの例題プログラムの実行例を示しておきます。Turtleによる描画例を上に示しましたが、フィルターなどの画像処理、物体認識から機械学習まで扱える、オープンソースのコンピューター・ビジョン・ライブラリ(OpenCV)があります。このライブラリにはパノラマ合成するStitching機能が含まれています。少し複雑な例を次に示します。
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
同じ画像の合成ですが、次に国土地理院が公開している地理院タイルを合成した事例を紹介します。データソースに電子国土基本図(オルソ画像)が有ります。これは空中写真を集めたもので、各部は256×256ピクセルの正方形タイルになっています、個々のURLは、 https://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg の形であらわされます。ここで、zはズームレベル、xはタイルのX座標、yはタイルのY座標を示しています。ズームレベルz = 18、左上のX座標x = 229930、Y座標y = 103841を基準として、経度方向に3、緯度方向に2タイルの範囲の画像データを読み取り合成したものを、図8に示します。これは、図7の建物がある、渉成園の周辺地域の航空写真を示しています。
同じデータ範囲を、電子国土基本図に適用してみると、図9のようになります。この基本図のURLは、 https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png です。このようなマップデータは、観光や防災など様々な分野での活用が期待されています。
地図表示の分野では、誰でも自由に使えるように、みんなでオープンデータの地理情報を作成するプロジェクトにOpenStreetMap(OSM)があります。OSMのデータを自由なライセンスのもとで配布されているため、第三者が著作権を主張する情報源から転載することによって、他者の著作権を侵害することのないよう、注意を払う必要があります。詳細は、OSMの利用可能なデータソースのページ(https://openstreetmap.jp/node/764)を参照してください。OSMのタイルに
http://tile.openstreetmap.jp/{z}/{x}/{y}.png
があります。上と同じ範囲で地図を作成した結果を図10に示します。日本向けには、基本地図に、さまざまなユーザの情報を付加して、https://openstreetmap.jpから公開されています。これらの技術は、平成時代に確立していますが、注目すべきは関連する周辺モジュールの完成度の高さです。そのため、各プログラムの生産効率は著しく高くなっています。例えば図10のような地図を作成し、ブラウザで表示するには、僅か10行程度のコーディングで完成してしまいます。しかも、この地図は拡大縮小が自由に行える上に、表示範囲は世界中になっています。
図10は単に表示しただけですが、表示が簡単ということは、令和時代にはさまざまな機能を追加して、観光や防災に活用することができることを示しています。
図11はマーカーにポップアップ機能を追加した例です。Pythonはデータファイルの読込も簡単なので、Google Map用のJSONデータを使って表示してみました。テキストや画像データにリンク情報が付けられるので、防災、防犯、教育などのプレゼン資料や地理教材などの作成に使うことができます。
やはり、オープンソースの機械学習用ライブラリにscikit-learnがあります。茨城県のオープンデータ、県内市町村における人口、商業、工業及び財政力などに関する基礎データより、土地利用の項目だけを取り出し、クラスター分析した結果を表1に、積み上げ棒グラフを図12に示します。棒グラフには、作図用のライブラリ(Matplotlib)を使っています。
農地 | 宅地 | 山林 | その他 | |
cluster1 | 31.0 | 12.9 | 32.1 | 24.0 |
cluster2 | 30.6 | 18.5 | 9.7 | 41.3 |
cluster3 | 51.0 | 14.2 | 9.5 | 25.3 |
cluster4 | 11.6 | 5.9 | 51.0 | 31.5 |
Pythonは、これらの画像処理やその基礎になっている科学技術計算、処理結果の作図機能など優れたモジュールが充実しているので、非常に学習に適した言語だと思います。
画像処理でも使われていますが、高次元のデータ処理が令和時代にはさらに発展する予感がします。単語やテキストをベクトル化すると、文章の類似度を求めることができます。これによって通常人間では考えつかなかった新しい世界が広がっています。感触をつかむため、京都大学学術情報リポジトリ (KURENAI) で公開されている、博士論文要旨から約700件を使ってモデルを作成し、類似度解析を行って見ました。結果の一例を示すと、
「リボフラビントランスポータRFVT3(SLC52A3)の生理的役割に関する研究」
という研究テーマに対して類似の論文を探すと、
0.710
甘松香由来セスキテルペノイドの鎮静活性に関する研究
0.619
芳香性化合物の吸入投与がマウスの摂食行動に与える影響に関する研究
0.564
生薬の品質評価の基盤となる精油ならびに色素の研究
が得られました、上記の数値は、テキスト(要旨)内容が完全に一致すれば、1を示します。ただ処理しただけですが、今後の展開が楽しみです。
Wikipediaの単語をベクトル化して、単語「岡山市」の類似度を調べた結果を次に示します。
0.783 倉敷市
0.742 玉野市
0.735 福山市
数値は類似度です。地理的に近く関係も密接でありそうな都市名が検出されているようです。
最近我国の科学技術の遅れが指摘されていますが、国立国会図書館の近代ディジタルライブラリを調べてみると、江戸時代、明治時代にも、さまざまな分野で我国オリジナルな活動がみられます。このような資料にも目を通し、新時代の発展に備えるべきでしょう。しかし、このライブラリには35万件のデータが含まれているため、簡単に情報を知ることはできません。殆どは人の目に触れず活用されていないと思います。本アプリには簡単な検索用例題を入れてありますが、テキストのベクトル化を活用すれば、更に合理的に情報入手ができるように感じています。上述の京都大学学術情報リポジトリを初めとして、インターネットで調べてみると、我国の各大学の図書館には膨大な論文や報告書が蓄積されています、また公的研究機関にも多数の情報があります。しかし、これらのうち活用されているものは限定されているように思われます。これらを最新のAI技術を駆使して活用できるようにすれば、技術力の大幅な強化が期待できます。最新の技術により、伝統技術を再評価し、次世代につなげるためにも高生産性のプログラム技術力を強化することは重要になります。
![]() | ![]() | ![]() |
原画像 | フーリエ変換画像 | フーリエ逆変換画像 |
GPUの性能を確認するために、画像のフーリエ変換を行ってみました。図13に処理画像を示します。CPUとGPUで比較した結果では、最低でも軽く100倍の高速性が得られています。このとき使ったCPUは、Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz、GPUは、NVIDIA GeForce GTX 1070 with Max-Q Designです。ハードやコーディングにより、数値は大幅に変わるので単なる参考値ですが、圧倒的な演算差が表れており、AIのモデル構築に大きく寄与するものと思われます。
上述の学習用アプリはには、Python学習一般の他、科学技術計算、画像処理、機械学習などの項目の例題が多数含まれており、小中高から大学に至るまでの、各課程での教育プラン立案やオープンデータの解析などにも活用できると思います。またCGIなどウェブアプリとの連携、簡単なチャットサーバの構築なども検討しているので、これらを利用して令和時代の教材を作成したい方は下記メールにご連絡ください。
このページに関する、ご意見・ご質問は右記にお願いします。 | 管理者メール [fu3t-nnk@asahi-net.or.jp] |
平成版はこちらです。 | ![]() |