「エージェント」と「環境」を意識して業務システムを少し賢くしたい

本記事では、エージェントの考え方にある「環境」を意識して、便利というより、賢い業務システムを作るための考え方みたいなことを書いてみました。

【目次】


[1]はじめに

私にはAI技術の深い専門的知識はありません。しかし、長年業務システムの設計や開発に携わってきたこともあり、AI技術そのものよりも、AI技術を応用して業務システムを少し賢くする、という観点から、AI技術に注目しています。大企業の業務システムや大規模パッケージは別として、中小規模の業務システムやパッケージに携わっている方は、同じような興味を持たれているかもしれません。

そこで、今回は業務システムのデータ入力をとっかかりとして、「便利」というより「少し賢い」ことを目指した業務システムについて考えていることを書いてみます。結論は当たり前の話ですが、そう考えた過程に参考になる部分があれば幸いです。


[2]「少し賢い」業務システムとは?

業務システムは、データを入力して、そのデータを処理し、処理結果を出力するというサイクルを持っています。ダサい図ですが、こんなイメージです。

業務システムのデータの流れ

ここでは、元となる入力情報が電子データではなく、紙や画像の情報を元に、人間が入力画面を通じて、その情報を手入力するシステムを考えます。例えば、紙に書かれている顧客情報を業務システムの顧客入力画面から入力するといったものです。

一般に、業務システムでは、入力するデータの量(入力量が多いなど)と質(正しくデータを入力するなど)等の観点から、ユーザにとってデータの手動入力は負担が大きい作業といえます。この負担を軽減するため、業務システムでは、入力画面に何らかの入力支援機能を装備することが多いと思います。例えば、郵便番号を入力すると住所欄に市区町村レベルまで自動入力される機能や、過去に入力したデータを覚えている機能、似たような登録パターンを選択して複数項目の初期入力を行う機能などをよく見かけます。

しかし、これらの機能は「とても便利な機能」という印象はありますが(というより、無いと不便で使えないと言われますが)、私には「賢い機能」という印象は薄いです。また、(賢い必要があるかどうかは別として、)このような「便利な機能」の延長線上に「賢い機能」があるようにも思えませんでした。どういうことでしょうか?

いろいろ考え方はあると思いますが、利用者から見ると、入力支援を利用する際にも少しは頭を使う必要があるし、そもそも支援はあっても入力作業は無くならないため、面倒な作業が残るという印象があるのではないかと思いました。

また、昔は「なぜこの程度の作業をコンピュータで自動化できないのか?」と言われることもありました。その背景には、誤解を恐れずに言えば、多くの場合、データ入力作業は紙に書かれている項目をコンピュータの入力画面に「転記」するだけの単純作業であり、「知的な作業ではない」と思われていた気がします。コンピュータは人間より高速かつ正確に(知的な?)業務処理ができるのに、なぜ誰でもできるような(知的でない?)入力作業ができないのか?という感覚だったのではないかと思います。(ちなみに、私は、異なる媒体間で情報を汎用的に正しく転記(変換)することは高度な知的作業だと考えています。)

これに関して、モラベックのパラドックス(Moravec's paradox)があります。以下はWikipediaにある説明の抜粋です。

  •  伝統的な前提に反して「高度な推論よりも感覚運動スキルの方が多くの計算資源を要する」というものである。
  • モラベックは「コンピュータに知能テストを受けさせたりチェッカーをプレイさせたりするよりも、1歳児レベルの知覚と運動のスキルを与える方が遥かに難しいか、あるいは不可能である」と記している
  •  マービン・ミンスキーは、最も解明が難しい人間のスキルは「無意識」だと強調している。

プログラム開発の立場からは、あいまいさのない厳密な業務フロー(対象データと処理手順が明確なもの)についてはプログラム化できるため機能を提供できますが、そうでないもの(人間は無意識に出来るが明確に説明できないこと)は仕様を定義できないため、機能を提供できません。先の手入力の例では、人間のように、紙に書かれている文字を認識し、業務処理に必要な情報を抽出するための汎用的な処理手順を定義することは難しいため、機能を提供できなかったということだと思います。(最近は少し状況が変わりました。)

あるいは、人間の直感に合わない画面操作を強いられる場合、設計の良し悪しの問題もあるかもしれませんが、人間の直感を仕様化することが難しいため、仕様化できる範囲で機能構成してしまい、人間に負担を強いることになっているかもしれません。

現在の技術では、コンピュータがユーザの要望を考えて自律的に動くことはできませんので、人間が動き方を教える必要があります。しかし、人間が説明できないことはコンピュータに教えることもできませんので、コンピュータは動けません。

結果として、人間が無意識にできる当たり前のこと(人間が知的ではないと思っていたこと)は、コンピュータにとっては、とても知的なこと(賢いこと)と考えることができると思います。

業務システムを「少し賢くしたい」と考えたのは、今まで業務システムでは実現困難だった、コンピュータにとって知的なこと(人間が知的でないと思っていた無意識に出来ること)を、人間と同レベルとまではいかなくても、少しは出来るようにしたいという思いからです。

大人が子供の成長を見て”賢くなったね”と褒める感じで、業務システムに対しても、「やっと少しは賢くなったな」と思われるようになれば面白いと思いました。

賢くすることと便利なことは方向が異なる考え方だと思いますが、業務システムがいい感じで少し賢くなれば、便利ともいえそうです。凄く賢くなれば、そもそも人間の作業が不要になって、便利というより当たり前という感覚になるかもしれませんが、そこまでいかなくても、入力支援としてでも少し賢くなれば、負担軽減効果になって便利だとも思えます。


[3]環境と相互作用するエージェント

今は第3次AIブームと言われるくらいで、AIという言葉はよく聞くようになりました。

AI(artificial intelligence、人工知能)とは何か?を説明しようとすると、専門家によっても定義が異なるくらいで、意外に簡単ではありません。ここでは、Wikipediaにある説明を引用します。

  • 『日本大百科全書(ニッポニカ)』の解説で、情報工学者・通信工学者の佐藤理史は次のように述べている。
    • 「誤解を恐れず平易にいいかえるならば、「これまで人間にしかできなかった知的な行為(認識、推論、言語運用、創造など)を、どのような手順(アルゴリズム)とどのようなデータ(事前情報や知識)を準備すれば、それを機械的に実行できるか」を研究する分野である。

これも少し難しいですが、先の「少し賢い業務システム」的な発想で都合よく解釈すると、人間は無意識にできるが、コンピュータにとっては難しいこと(コンピュータにとっては知的なこと)について「も」研究している分野には違いないと思います。(当然、人工知能研究はそれにとどまらず、人間にとって難しいこと、も研究しています。)

ということは、業務システムを少し賢くするためには、AI技術を取り込めばよいのですが、AI技術は多岐に渡っており、何からどのように手を付ければよいのでしょうか。また、業務システムを「少し賢い」から「凄く賢い」方向へ成長させる指針のようなものが欲しいところです。

ここでAIにはエージェントという考え方があります。とはいっても、エージェントにも様々あるようですが、ここでは下記の本

を参考にして、超大雑把な考え方を、図で表してみます。

エージェントの考え方

それぞれについて深い意味を考えるととても難しいのですが、ここではざっくり考えます。まず、「環境」とは、エージェントを取り巻く(リアルな)世界です。「知能」は、知覚に応じてエージェントがとるべき行為を決定する何かです。(この部分を知能と書いてよいか悩みますが、説明を簡単にするため便宜上「知能」としています。ちなみに書籍『エージェントアプローチ人工知能』では、?と図示してエージェント関数としています。)

そして、エージェントを人としてみると、「センサ」は目や耳の感覚器官にあたり、「アクチュエータ」は、手や足など行動する部分です。また、エージェントをロボットとしてみると、「センサ」はカメラや加速度センサなどであり、「アクチュエータ」はモータやスピーカなどとなります。

エージェントの考え方は、環境をセンサを通じて知覚し、それに対する意思決定を行い(知能)、アクチュエータを通して環境へ影響を及ぼす行動をする、というサイクルです。具体的には、目や耳(センサ)によって車が近づいてくることを知覚すると、危険を察知して車と接触しない方向へ移動することを決定して(知能)、体を移動する(アクチュエータ)という感じです。

この図は、センサ=入力、知能=処理、アクチュエータ=出力と対応付けると、先の業務システムの図と似ています。しかし、似てはいるけれども大きな違いがあります。それは、エージェントの考え方には、「環境」という考え方が組み込まれており、いわば実世界との相互作用が組み込まれていることです。現在の業務システムには、この「環境」の概念が薄く、環境とシステムの間を人間が取り持っていて、そこが負担になっているということではないかと思います。あえて「環境」を加えて業務システムの図を書いてみます。

環境を加えた業務システムのデータの流れ

考え方レベルの話ではありますが、業務システムで「入力」「出力」と考えているところを、「センサ」「アクチュエータ」と考えて「環境」と直接相互作用することを視野に入れて考えるようにすると、人の作業負担が少しでも減らせそうな気がします。

ところで、このエージェントの考え方には重要な役割があると考えています。それは、多岐に渡るAI技術を、エージェントのパーツに対応付けて整理できることです。実際、上記の書籍『エージェントアプローチ人工知能』では、そのように目次が構成されており、とても参考になります。

これらを考えると、業務システムの構成に「環境」を組み込んで、エージェントのようなアーキテクチャを考えるようにすると、業務システムが「知的」あるいは「賢い」と思えるように進化させる方向が示せるような気がします。いわば「業務システム」から「業務エージェント」といえるように進化させるということです。

とはいえ、業務システムを開発する立場で考えると、費用対効果や納期、技術レベルその他もろもろの事情があるため、業務システム設計をエージェントレベルへ一気に飛躍させることは現実には難しいと思います。したがって、ユーザ負担が大きく、かつ、AI技術が投入できそうなところから、少しづつ賢く(エージェント化)していくのが現実的だと思っています。


[4]業務システムから見たAI技術

エージェントの考え方は新しいものではなく、先の『エージェントアプローチ 人工知能』英語版の初版は1995年に発刊されています。そもそもAIという言葉は1956年にダートマス会議でジョン・マッカーシーにより命名されたもので、長い研究の積み重ねがあるものです。(初代コンピュータ(ENIAC)が1946年に誕生したことを考えると、AI研究はコンピュータの歴史とほぼ同じくらいの長さはあります。)

また、第2次AIブーム(1980年代)には商用エキスパートシステムも多く作られたようですが、その後冬の時代となり、その後の業務システムを考えてみると、むしろAI的な要素は除外されていたようにすら思えます。私はこの時期のAI技術はとても面白いと思いますし、今でも適用分野を絞れば面白いことができると思っていますが、なぜ業務システムへ積極的に応用されなかったのでしょうか。

AI研究の立場の書籍を読むと様々な理由が述べられていますが、私なりに業務システム開発の立場から考えてみると、利用者の過剰な期待と現実とのギャップが大きなリスクになるからではないかと思いました。プロジェクトの成功を顧客が満足することと考えると、利用者の期待値が高すぎる場合、従来技術より良い成果を出したとしても、期待を下回り、失敗とまではいわなくても、期待外れとなる可能性があります。過剰な期待を抱かせる原因は、もしかすると「人工知能」という言葉の響きだったかもしれません。

業務システムは費用対効果を考えて、必要最小限かつ確実な成果が出せる範囲に絞って作るものでもあります。「人工知能」を持ち出さなくても、とても便利な支援機能機能を組み込むことで、利用者の期待を上回ることが出来れば、それに越したことはありません。但し、この考え方は、元のシステムへの期待値が比較的低い場合に成り立つ考え方にも思えます。

(ところで、昔はAIという言葉より人工知能という言葉が多く使われていたような気がします。今は人工知能よりAIという言葉の方が多く使われている気もします。超個人的な感想ですが、日本人にとってAIのほうが人工知能より緩い響きというか硬くない気がするので、どちらの言葉を使うかによっても、イメージが少し変わるような気がします。)

さて、現在は第3次AIブームと言われてマスコミ等でも多く取り上げられ、とても期待値が高いと思います(仕事を失う、という恐怖感を抱く人もいるくらい)。そして、現在のAI技術は確かに凄いですが、課題も示されています。このような状況で今AI技術を導入しても、第2次AIブーム後と同じことにならないのでしょうか?

面白いことに、昔AI分野で研究された技術が普及するとAIと言われなくなります。そのような例はたくさんあります。例えば、ウィンドウとマウスを持つコンピュータなどです。今AIと言われている技術も、定着するとAIとは言わなくなるかもしれません。

私にAI技術の今後はわかりませんが、業務システム開発の立場から見ると、「AI」や「人工知能」という言葉にとらわれる必要はないと思います。入力支援ツールの選定と同じ感覚で、AI技術を実際に試して業務改善に役立つかどうかを評価し、役立つなら採用すればよいということだと思います。つまり、AI技術であるかどうかを問わず、業務改善に役立つ技術であれば積極的に取り入れるべきではないかと思います。


[5]AI技術導入に向けて

AI技術が役立つ技術かどうかは試してみなければ分かりません。しかし、身近にAI技術者がいれば話は別ですが、多くの場合、業務システム関係者がAI技術に詳しいとは限りませんので、そもそも、どのような技術があるのかすら分からない場合も多いと思います。また、仮に期待できそうなAI技術があったとしても、深い専門知識が無くても簡単に試すことが出来ないと評価ができません。仮に採用したい技術があったとしても、業務システムとの連携や運用その他の条件がクリアできないと採用できません。そう考えると、業務システムへのAI技術導入は、AI技術が解決する内容が基本ではありつつも、導入への敷居の低さ等の要因の方が大きいようにも思えます。

そこで、業務システム開発の立場から、試してみたいAI技術をご紹介!といきたいところですが、これはネットで最新の情報を検索していただくのが一番良いと思います。
業務システムには、それぞれ異なる顧客要求や課題、リソースなどの制約があり、また、AI技術も多様なため、それぞれ技術選定の指標も異なるのが現実と思います。このため、調査のためにネット検索で入力するキーワードも異なるのではないかと思います。この多様な状況を逆に考えれば、オリジナリティのあるソリューションを構築できる可能性があると言えるかもしれません。

ネット検索のヒントになるかどうかはわかりませんが、AI技術そのものではなく、業務システムとAI技術の間にありそうなことを少し書いてみます。


(1)スマートデバイス、IoTデバイス

スマホやタブレットなどのスマートデバイスといわれる機器が普及しました。説明不要かと思いますが、これはアプリを動作させられるだけでなく、高精度カメラや各種センサーを備えており、さらにインターネットにもつながります。

多くの場合、業務システムは複数の人間が協調して業務フローを実行するため、インターネットを介して業務システム本体と連携する必要があると思いますが、スマホなどのスマートデバイスが強力なフロントエンドとして、エージェントのセンサやエフェクタの役割を果たすと思います。

さらに、IoT(Internet of Things、モノのインターネット)デバイスも手が届きやすくなりました。例えば、最近人気のRaspberry piにセンサーやアクチュエーターといった各種デバイスを接続し、業務システムと相互通信することも可能です。

このように、センサーやアクチュエータにあたるデバイスを業務システムと連携させることが簡単に利用できる環境が整ってきたと言えます。


(2)インターネット、クラウド、オープンソース

インターネットやクラウドについても説明不要だと思いますが、業務システム開発の立場から、これらの影響について書いてみます。

まず、インターネットでは様々な分野の良質なオープンソースが公開され、利用できます。従来はかなり低レベルのプログラムから実装が必要だったものが、現在は、低レベル部分はオープンソースを利用し、業務ロジックに設計を集中できるレベルになっていると思います。これは低レベルに限らず、高度なライブラリまで利用できるようになっており、従来は実装が難しかった機能まで、オープンソースの力を借りて実装できるようになっていると思います。これは機能面だけでなく、セキュリティや品質の向上にも役立ちます。

同じ流れで、最近のAIツールの多くはオープンソースとして公開され、知見も共有されています。データについても同様に、一般利用可能なオープンデータがインターネットから入手できます。加えて、最近は教育教材も豊富です。勉強する気になれば、ネット検索で有償、無償を問わず、教材を見つけることが出来ます。

これだけでも従来とは大きく変わっていますが、仮に、オープンソースやデータが揃って、かつ、利用法も理解できたとしても、多くのコンピュータリソースが必要となると、実際には試すことが難しくなります。具体的には、実験のためにサーバやディスクを購入する必要があるなら、技術面以外の敷居があります。さらに、運用コスト等を考えるとさらに敷居が高くなります。

パブリッククラウドの登場は、これらの敷居を大きく下げてくれました。特に初期導入コストが低いこと、不要になったら破棄できることなどから、リスク少なく取り組むことができます。これらより、まずは試してみる、という環境が整っているといえます。


(3)AIサービスの利用

仮にデバイスやクラウド、オープンソースなどの部品が揃ったとしても、中小の業務システム開発現場の現実を考えると、それでも、なかなかAI技術導入までは敷居が高いのではないかと思います。

様々な理由はあると思いますが、”勉強や実験の手間をかける時間が無い”ということがあると思います。実際、業務システムの本来の目的はAI技術の導入ではなく、費用対効果の高いシステムを設計、実装して負担少なく運用することで、お客様に喜んでもらうことだと思います。よって、AI技術導入が目的でない限り、AI技術導入の検討よりも、業務理解により多くの時間を割くのは当然です。また、別の観点では、AI技術を導入しなくてもビジネス上の問題ない、ということもありえます。特に、費用対効果が見込めない場合は、採用できない、という判断になると思います。

とはいいつつも、AI技術が難しいかどうかは別として、利用することが難しいのかどうか、そして役立つかどうかは試してみないと分かりません。業務システムでの利用という立場で考えると、AI技術の基礎から勉強する必要はなく、大雑把な考え方とツールの使い方などを少し勉強すれば、試すことくらいはできます。

ネットで検索すると、無料でまずはちょっと試してみる、ということができるAIプラットフォームといわれるAIサービスがたくさん見つかります。

オープンソースレベルから始めようとすると、特に機械学習関係は、動作環境の構築だけでなく、学習データの準備など、かなり敷居が高いのが現実かと思います。しかし、サービスによって内容は異なりますが、学習済みのモデルを利用してAPI連携レベルで簡易に利用できるサービスもあります。ここまでくると、業務システムの立場からは、ブラックボックス化された1つの業務サブシステム連携というレベルで考えることが出来ますので、設計や実装負担もあまりないと思います。試した結果、それなりの精度が出て利用できそうであれば、業務フローをどのように改善できるか?という本来の仕事に集中できそうです。

まずは試してみて見込みがあるようなら、本格的な学習を行う環境から運用環境まで、レベルに応じてサービスが提供されているようですので、取り組みやすいと思います。



(4)Society 5.0、DX、IoTプラットフォーム

余談になりますが、日本が新たな社会の実現を目指して、平成28年1月に策定された第5期科学技術基本計画で提唱した概念として、Society 5.0(ソサエテイ 5.0)があります。

(詳しくは、https://www8.cao.go.jp/cstp/society5_0/を参照してください。)

これによると、Society 5.0とは、「サイバー空間(仮想空間)とフィジカル空間(現実空間)を高度に融合させたシステムにより、経済発展と社会的課題の解決を両立する、人間中心の社会(Society)」とされています。

これだけだと私にはピンと来なかったのですが、上記の説明に「Society 5.0のしくみ」があり、ここには「Society 5.0では、フィジカル空間のセンサーからの膨大な情報がサイバー空間に集積されます。サイバー空間では、このビッグデータを人工知能(AI)が解析し、その解析結果がフィジカル空間の人間に様々な形でフィードバックされます。」と図とともに説明されています。これを簡略化すると以下のようになります。

Society 5.0とエージェントの対応

ここで、フィジカル空間=環境(リアルな世界)、センサ情報=センサ(知覚)、AI(解析)=知能、新たな価値=アクチュエータ(行為)と対応させると、エージェントと同じ形のように思えます。ただ、Society 5.0は、人のモデルというより社会のモデルであるため、強調している内容が少々異なりますが、ここで利用される技術は、業務システムを賢くするための技術と共通しています。

ここでは深入りしませんが、Society 5.0よりビジネス用語としては「DX(デジタルトランスフォーメーション)」という言葉をよく聞きます。これは「ITの浸透が、人々の生活をあらゆる面でより良い方向に変化させる」という概念であり、具体的な仕組みを定義している用語ではありません。

近年はこのSociety 5.0に示されるようなビジョンやDXを実現するための仕組として、IoTプラットフォームが多く登場しています。ビジネス要件にもよりますが、IoTプラットフォームとAIプラットフォームを組み合わせて業務システムと連携すると、業務システムからみると、一般的なサブシステム連携といったレベルで知的なソリューションを実現できる場合もあるかもしれません。。


(5)AIアシスタント、RPA

CP/MやMS-DOSという言葉を知っている方はご存知と思いますが、昔は日本語入力は特別なものでした。今やIMEという言葉も死語になりつつあるくらい日本語入力はOSレベルで当たり前の存在になりました。

同様に、Siri、Cortana、Google Assistant、AlexaなどのAIアシスタントがもっと進化して、業務システムのセンサやアクチュエータにあたるところは何もしなくても自然に賢くなるのではないか?と考えられるのでしょうか。

私は(遠い将来のことはわかりませんが)、AIアシスタントが今後もどんどん進化することは間違いないと思いますが、それは汎用的な情報に限定されて、個別の業務システムとの相互作用ができるようになるのは難しいと思います。

それは、人、部署、会社、業界、社会のそれぞれにおいて、情報の意味や扱いが異なることが多いため、汎用のAIアシスタントが業務システム固有の意味に変換して、業務システムと相互作用することは難しいと思うからです。そもそも汎用のAIアシスタントが個別の業務システムの機能内容を把握することも難しいと思います。(それができる時代がきたら、業務システムが無くなっているかもしれません。)

但し、これはAIアシスタントに期待するよりも、作業パターンをある程度限定できる場合は、RPA(Robotic Process Automation)を導入することで解決できる場合もあると思います。成功事例も多いようです。この場合は業務システム側は何もする必要あありませんが、利用者側にRPAを導入するスキルが必要となり、さらにコストもかかります。RPAは面白い分野だと思いますが、業務システム開発側のテーマからは少し外れますので、ここまでとします。

なお、AIアシスタントはカスタマイズ可能であり、多くの製品に用いられているようです。これを用いて、業務システム側からAIアシスタントを拡張する方向性もあるかもしれません。


(6)オントロジー、推論など

第2次AIブームを牽引したのはエキスパートシステムに代表される知識を扱う技術といわれています。そこでは様々な知識の表現方法や推論が研究され、ブームが去った後も、オントロジーセマンティック・ウェブLinked Open Data(LOD)など研究が続けられています。

そして、現在のAIブームの直前、2011年にIBMのWatson(ワトソン)が国の人気クイズ番組「ジェパディ!」に挑戦し、総合ではワトソンが勝利したというニュースがありました。これは現在の深層学習以前のAI技術の集大成と言われています。

近年は知識処理が語られることは少ない気がしますが、個人的には、オントロジーなどの知識処理技術は、業務システムの実装面だけでなく、特に設計において、とても役立つ技術だと思っています。


[6]最後に

今も昔も、コンピュータは「凄い」と思うこともあれば、「まだまだだな」と思うこともあります。「まだまだ」と思うことは、もとを辿れば環境と関係することが多くあると思います。業務システムを考えたとき、環境との相互作用を意識して構成を考えると「少しは賢くなったな」と言ってもらえるシステムを作るヒントになるのではないかと思い、この記事を書いてみました。

自分専用のアプリを作ろうと思ったら、無駄でも面白そうな技術を試してみるものですが、お金と納期がある他人のためのアプリを作るとなると、リスクが頭をよぎって冒険できなくなります。どちらがよいということではありませんが、業務システム開発において、AI技術かどうかは別としても、ほんの少しでも冒険できると面白いと思います。


コメント

このブログの人気の投稿

VirtualBoxのスナップショット機能

Google Document AIで画像から表形式データを抽出する(Vision API OCRとの違い)

Vision API OCR事始め(1):TEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの違い