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

2020年11月24日火曜日

官報掲載 統計センター 【AI技術を用いた文字認識サービスの提供業務】

私がシステム設計、提案した案件が官報に掲載されました。統計センター【AI技術を用いた文字認識サービスの提供業務】です。これは紙の統計調査票をAI-OCRという文字認識技術で自動読み取りしてデータの整備を行うというもので、AI技術の実使用として国内最大規模のものです。令和2年国勢調査を含む大規模調査の自動読み取りに5年間使用されます。

第3次AIブームも重要なマイルストーンを通過しました。

期待値だけでは技術の自然成長はあり得ません。実使用に耐え、経済価値をもたらすかがポイントです。同じAI、ニューラルネットでも音声認識はOCRほどお金になりません。官庁であれ民間であれ業務情報は書類として記録されており、オーディオで保存されている訳ではないからです。画像認識の応用として医療がありますが、医師抜きの画像診断に診療報酬をつけられる訳でもなく、お金になるのでしょうか?AI-OCRがちょうど実使用期に入った良いタイミングでこの入札がありました。書類を対象とするAIは今後も発展していくでしょう。

AIだけでは実用レベルのシステムは出来ません。他のIT技術を組み合わせた全体設計となって、ようやく使い物になります。要件分析、基礎設計、プロジェクト計画など全てを私が行いました。建築のような目に見えるデザイン、意匠はありませんが、システムにも筋のいい設計、悪い設計があります。基礎技術を使って費用対効果の高い、シンプルで安定したシステムを設計するのが私の得意です。1人称で書いていますが、本当に1人称です!入札提案は難易度の高い仕事ですが、落札提案がまさか1人の手によるものだったとは競合もあきれ返ることでしょう。

入札提案の実際はまた次の機会に

永島志津夫

全社のシステムを少ない人数で見ていれば時に見落としもあるかもしれません。
オフィスエヌ ショートレビュー5万円から
連絡先 office.nagasima#gmail.com (#を@に変えてメールをお願い致します)

2020年2月11日火曜日

記号処理とニューラルネット 後半 〈Python AI ニューラルネット その7〉

ニューラルネットに記号処理・記号学習を組み合わせたら、というお話の後半です(前半はこちら)。欲張って中間層を50セルにし、第二位と誤答データだけで学習させたネットの結果(記事はこちら)を記号学習させました。結果は98.5%となりました。

中間層50セルで誤答データのみで再学習、epoch 1-17 が1つ目のニューラルネット、それ以降が2つ目のもの


記号学習は記号列生成と重み付け(学習)の2つのステップがあるのですが、今回は単純なので生成は端折りました。

記号列です
正解|第一位|第二位|誤答学習による第一位
ニューラルネットの表現では入力層が 10 + 10 + 10 、 出力層 が 10 、 この組み合わせが 10,000  ( 10 * 10 * 10 * 10 ) あるイメージとなります。

学習アルゴリズム
各記号列の重み付けは 10 * 10 * 10 * 10 = 10,000 のカウンター配列で表現します。学習データの結果に該当する配列要素をカウントアップしていきます。

評価アルゴリズム
テストデータに対し評価を行います。第一位誤答時に、第一位、第二位、誤答学習ネットによる第一位の記号列に相当するカウンター配列から最もカウントの多かった正解* を選びます。numpy.argmaxで一発ですね!

以上です。何と単純なアルゴリズムでしょう。くどいことを言えばAICを参照して冗長なパラメータをまとめてもいいのですが、アルゴリズムの単純さをそのままにしました。

これでもダメなケースはアフィン変換で伸ばしたり、縮めたり、回したり、動かしたりなのですが、計算コストがかかります。なので、簡単なアルゴリズムである記号処理を先に適用して良いかと思います。また記号処理はバイアスをかけられる利点があります。* 最もカウントの多いものを選ぶ代わりに、答えの候補のカウント値や順位を参照します。

MNISTのデータだとコンテキストはないのでバイアスの実験にはなりません。面白そうなサンプルがあったらまたブログにしますね。
永島志津夫

2020年2月7日金曜日

記号処理とニューラルネット 前半 〈Python AI ニューラルネット その6〉

ニューラルネットに記号処理・記号学習を組み合わせたら、というお話です。前回、“多層化が認識の本筋ではない” ことに触れました システムの費用対効果 〈Python AI ニューラルネット - MNIST その5 その続きになります。


まず、テスト結果を見てみましょう。

中間層50セルのテストデータ評価

出力 0 1 2 3 4 5 6 7 8 9 合計
誤答 54 25 59 70 62 39 57 46 61 64 537
正答 962 1,114 967 953 932 808 919 961 912 935 9,463
合計  1,016 1,139 1,026 1,023 994 847 976 1,007 973 999 10,000

出力の3や9の誤答率が高いですね。どのように間違えているか見てみましょう。

同、出力別正解対応表

 出力
正解
0 1 2 3 4 5 6 7 8 9 合計 
0

2 2
4 7 2 1
18
1

2 2
1 5 2 9
21
2 11 1
7 10
9 9 16 2 65
3 1 1 16

14 1 11 10 3 57
4 1 2 4


10 2 3 28 50
5 11 1 3 25 3
14 5 15 7 84
6 11 3 3
10 6
1 5
39
7 3 7 25 7 5



20 67
8 5 3 3 16 6 8 11 6
4 62
9 11 7 1 11 28 6
8 2
74
合計  54 25 59 70 62 39 57 46 61 64 537

これを見ると、誤答パターンがあるのに気付きますね。

出力 = 3では誤答70例中、正解 =  5, 8 で41例と過半数を占めます。“3のような5”、“3のような8” の悪筆が比較的多かったとも言えます。出力 = 3で間違えたら 5 と再回答すれば 25 / 70 ≒ 36% の確率で正解します。

出力層第二位の結果に注目して詳細を見てみましょう。出力層第二位の結果を含めると正解率は向上します。
システムの費用対効果 〈Python AI ニューラルネット - MNIST の続き〉

二位出力別正解対応表(一位出力=3で誤答)
  二位出力
正解
2 4 5 6 7 8 9 合計
0

1

1
2
1

1
1

2
2
1 2
1 3
7
5

25



25
7



3 2 2 7
8 1
1 1
13
16
9

1

3 7 11
合計 1 1 31 1 5 22 9 70

二位出力=正解のケースは誤答総数70例中、48例( 25 + 3 + 13 + 7) です。なので二位出力を再回答すれば 48 / 70 ≒ 69% の確率で正解します。では全てのケースで二位出力を再回答すればよいのかというとそうでもありません。

二位出力別正解対応表(一位出力=9で誤答)
  二位出力
正解
2 4 5 6 7 8 合計
2




2 2
3

1
1 1 3
4
1 2 1 10 14 28
5
1 2
1 3 7
7 1 5 6
3 5 20
8
1

1 2 4
合計 1 8 11 1 16 27 64

最も多い正解は 4 で 28例です。4と再回答すると 28 / 64 ≒ 44% の確率で正解します。ところが二位出力=正解のケースは 8例しかありません。 正解確率は 8 / 64 ≒ 13% とかえって悪くなります。 “9のような4” 、 “9のような7” は単純なニューラルネットには難し過ぎるようです。
そこで二位出力が2,4,5の時は7と答え、6,7,8の時は4と答えると 37例が正解になります。正解確率は 37 / 64 ≒ 58% です。

このような再回答ロジックにより正解率97.4%(誤り率2.6%)に改善できます(元の正解率94.6%(誤り率5.4%))。なお、 第二位再回答では正解率96.9%(誤り率3.1%)です。

実はここまでが前置きになります。今回のお題は記号処理とニューラルネットです。このような再回答ロジックを “人間が” プログラムで組むことは簡単ですが、果たしてニューラルネットで表現したり、学習することはできるのでしょうか?

長くなったので2回に分けます。次回に続く。
永島志津夫