投稿

百科事典のようなAI技術の包括的な教科書(エージェントアプローチ 人工知能/AIMA:Artificial Intelligence: A Modern Approach)

イメージ
Artificial Intelligence: A Modern Approach 発売日 ‏ ‎ 2020/4/28 Stuart Russell (著), Peter Norvig (著) 言語 ‏ : ‎ 英語 Artificial Intelligence: A Modern Approach (Pearson Series in Artifical Intelligence) (Amazonで書籍情報を表示) 『Artificial Intelligence: A Modern Approach』(日本語版『エージェントアプローチ 人工知能』)は世界で最も読まれている有名な人工知能の教科書(とのこと)です。 流行り廃りがあるAI分野において、初版(英語版:1995年)から最新の第4版(英語版:2020年)まで、改定を続けながら長きにわたって地位を保っている凄い本です。 この本は、その筋?では「AIMA」と略されるようです。 英語版ですが、この本に関する Wikipedia のページがあります。 Wikipedia: Artificial Intelligence: A Modern Approach ところで人工知能にはいろいろな定義があることは有名な話ですが、この本では以下のように定義しています。 本書の主要な統一テーマは、知的エージェントの概念である。我々は人工知能を、環境から知覚し、行為を行うエージェントの究明と定義する。そのような個々のエージェントは知覚を行為に変換する関数によって記述される。本書では、これらの関数を表現する多くの異なった方法を取り上げる。 これは日本語第2版の前書きにある定義ですが、この考え方は最新版の第4版でも引き継がれています。 そして第2版から第4版まで、本の最後は Alan Turing のエッセイの最後の一文で締めくくられているのも興味深いです。 「我々はあと一歩のところまできていることが分かる、そして同時に、なされなければいけない多くのことが残っていることも。」 この本は確立された技術を淡々と説明する教科書ではなく、知的エージェントを作るには何に取り組む必要があり、それらに対してどのようにアプローチするか、といったストーリーを感じます。そして、執筆時点での新しい技術にも触れられ...

REA パターンとオントロジー(ビジネスパターンによるモデル駆動設計)

ビジネスパターンによるモデル駆動設計 Pavel Hruby (著), 依田 智夫 (監修, 監修), 溝口 真理子 (翻訳), 依田 光江 (翻訳) Model-Driven Design Using Business Patterns 日本語版 発売日 2007/8/9、英語版 発売日 2006/6/22 ビジネスパターンによるモデル駆動設計 (Amazonで書籍情報を表示) REA(Resource-Event-Agent)という言葉は本のタイトルに含まれていませんが、この本は REA モデルにもとづく業務アプリケーションの設計パターン本です。 REA とは、ざっくり言えば、「商品を売ってお金をもらった」といったことを、「商品を売る(商品が減る)」、「お金が増える」という2つの双対な経済イベントとしてとらえ、そのイベントに関係するリソース(商品、お金など)と、エージェント(売り手、買い手となる企業や個人)を合わせてモデリングする考え方です。 これは簿記において、取引を借方と貸方で金額が同じによるように仕訳するのと似たような考え方ですが、そもそも REA は汎用の会計モデルとして提案された方法とのことなので、似ているというより包含した考え方のようです。 Resources, Events, Agents(英語版Wikipedia) https://en.wikipedia.org/wiki/Resources,_Events,_Agents REA Technology http://reatechnology.com/ 日本語: http://reatechnology.com/jp-index.html What Is REA http://reatechnology.com/what-is-rea.html 私は財務会計に関する知識は持ち合わせていないので、会計モデルとの対比云々は語ることができませんが、この本は財務会計の本ではないので会計知識が無くても読めますし、私は REA の双対となる増減イベントの考え方は強く印象に残りました。 また、この本には以下のように書かれています。 アプリケーション設計者は、一貫性があり業務の観点から見落としのない構造を手に入れることができるはず この本が出版された当時に読んだ印象は「面白い視点...

オントロジーエディタ Protégé を使ってみる

イメージ
本記事では、デスクトップ版の Protégé のセットアップと、オントロジーの可視化、推論などの使い方を簡単に見ていきます。 【目次】 [1]はじめに [2]Protégé Desktop のセットアップ (1)Ubuntu でのインストール手順 (2)起動確認 (3)起動用ショートカットの作成 [3]オントロジーの可視化ツール (1)OWLViz (2)OntoGraf (3)ProtégéVOWL [4]推論:Reasoner (1)推論の実行 (2)Pellet の利用 [5]その他 (1)Automatic Update の設定 (2)オートコンプリートの利用 (3)エンティティのレンダリング設定 (4)メモリ設定(2022/7/31追記) [1]はじめに Protégé はスタンフォード大学で開発されているオープンソースのオントロジーエディタです。 Protégé https://protege.stanford.edu/ Welcome to the Protégé wiki! https://protegewiki.stanford.edu/wiki/Main_Page Protégé Project (GitHub) https://github.com/protegeproject/ Protégé を使えば、Web オントロジー言語である OWL(Web Ontology Language)を対話的かつ視覚的に扱うことができ、HermiT や Pellet などの推論も利用できます。 Protégé は大きくWeb版とデスクトップ版がありますが、本記事ではデスクトップ版を見ていきます。 デスクトップ版には Web版のようなコラボレーション機能はありませんが、オントロジーエディタとしての機能面はWeb版より充実していると思います。 記事『 Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2) 』で紹介した本では、Owlready2 の説明の前にデスクトップ版 Protégé を使ってオントロジーを作成するところから始まります。 Protégé を使わず OWL を...

Owlready2 を Colaboratory と Ubuntu で利用する

イメージ
本記事では、Owlready2 をお手軽に利用できる Google Colaboratory 環境と、アプリ開発での利用を想定したローカルマシン環境(Ubntu 20.04 LTS)で利用するための手順を見ていきます。 【目次】 [1]はじめに [2]Google Colaboratory で使ってみる (参考)Cython [3]Ubuntu 上に開発/実行環境を作る (1)Python の基本的なコンポーネントのインストール (2)Java のインストール (3)Python 仮想環境(venv)のインストール (4)venv 仮想環境の作成と有効化 (参考)VSCode での venv 環境の確認 (5)venv 仮想環境に Owlready2 をインストール (補足1)error: invalid command 'bdist_wheel' (補足2)Cython パッケージをインストールしない(できない)場合 [4]People Ontology を使って推論動作を確認してみる [1]はじめに 記事『 Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2) 』で、Owlready2 を紹介しました。 Welcome to Owlready2’s documentation! https://owlready2.readthedocs.io/en/latest/ Owlready2 (Github) https://github.com/pwin/owlready2 Owlready2 を利用すると、OWL(Web Ontology Language)をはじめとするセマンティックウェブ系の技術を手軽に扱えるだけでなく、Python で活発に開発されているモダンなツール/ライブラリとの連携も可能になると思います。 加えて、一般的なアプリ開発においてもセマンティックウェブ系の技術を利用する敷居を下げてくれるものだと思っています。 そこで本記事では、Owlready2 をお手軽に利用できる Google Colaboratory 環境と、アプリ開発での利用を想定したローカ...

究極のモデリング(オントロジー工学)

イメージ
今回取り上げるのは「オントロジー」についての“深い”本です。 私はセマンティックWebやオントロジーの専門家ではなく、業務システム開発を生業とするものですが、私が以下の本に強く惹かれる理由は、この本の以下の一説に集約されているように思います。 オントロジー研究の本質は、物事に共通する本質を見抜く眼力と類似する物事の厳密な差別化をする鋭い分解能力にある。そして何よりも、オントロジーを正しく学ぶと、その二つの能力が高まり、結果として世界を構成する基盤概念の理解が深まるので、複雑な対象を明快に概念化することができるようになる。 これは読まねば。。。 オントロジー工学 (知の科学) 溝口 理一郎 (著), 人工知能学会 (著) 発売日 ‏ : ‎ 2005/1/1 オントロジー工学 (知の科学) (Amazonで書籍情報を表示) 目次 Ⅰ編 オントロジー事始め 1章 オントロジーとは 2章 今なぜオントロジーか 3章 オントロジーの種類 4章 FAQ 5章 オントロジー構築 6章 セマンティックウェブ Ⅱ編 より進んだ考察 7章 オントロジーに関する基礎的考察 8章 オントロジー基礎研究 9章 オントロジー工学の成功事例 Ⅰ編は、様々な立場でのオントロジーの定義が紹介され、オントロジーに関連することを俯瞰的に取り上げて、オントロジーとは?という問いに答えています。 オントロジーという言葉は立場が違うと関心事(目的?対象?)が異なるようなので、本のタイトルが「オントロジー」ではなく「オントロジー工学」である理由が理解できる気がします。(人工知能(AI)という言葉もなかなか難しいのと似ている気がする。。。) ところで、本のまえがきに、「本書は工学におけるモデリングと、存在論を論じる哲学者とのギャップを埋めるための第一歩を踏み出したいという気持ちに動かされて執筆された。」とあります。 続くⅡ編はまさにこの内容です。 上位オントロジーに関する内容が中心で、かなり哲学的な問題(世界)を扱っていて、難解な話が続きます。 哲学分野の存在論(オントロジー)の専門書や英語の上位オントロジーの書籍(論文?)など、様々な情報源はあると思うのですが、工学の視点で書かれた日本語の深い本は他に見かけませんので、個人的には、ここがこの本の最も価値ある部分...

OWLの理論的基礎を知る本(記述論理とWebオントロジー言語)

記述論理とWebオントロジー言語 (知の科学) 兼岩 憲 (著), 人工知能学会 (編集), JSAI= (編集) 記述論理とWebオントロジー言語 (知の科学) (Amazonで書籍情報を表示) 前の記事『 RDF, OWLの面白さを知る本(Semantic Web for the Working Ontologist) 』では、RDF や OWL によるモデル構築に関する本を紹介しました。 この本の初版を読んで素晴らしいと思った理由の一つは、RDF から始めて OWL まで、表現力がどのように向上していくかを、基本的なトリプルの推論規則として簡潔に説明してくれているところでした。 これにより、流れるように RDF から OWL まで理解できたように思います。 一方で、実は私には少しモヤモヤ感も残りました。 それは、自分でモデルを作ってみようと思ったとき、RDF(S) でモデル構築すべきか、OWL でモデル構築すべきか?という素朴な疑問です。 実際には、要件や用途、対象となるドメインの複雑さなどに加えて、現実問題として、利用できるツールの制限や理論の理解の程度など、様々な要因から決まると思います。 しかし、技術的な理解不足もあって、そもそも RDF(S) の延長上に OWL があるのなら、なぜ RDFS あるいは OWL として一つの規格にしなかったのかな?という素朴な疑問につながり、そこが私が感じたモヤモヤ感だと気付きました。 OWL の仕様書には、「形式的に定義された意味を有するセマンティック・ウェブのためのオントロジー言語です」と書かれています。 OWL 2ウェブ・オントロジー言語 ドキュメント概要(第2版) https://www.asahi-net.or.jp/~ax2s-kmtn/internet/owl2/REC-owl2-overview-20121211.html この「形式的に定義された意味を有する」というのは、記述論理(DL: Description Logic)を基盤としています。 そこで、記述論理を少しだけでも理解しておこうと思ってネットを探してみると、英語の(専門家向けの難しい?)資料は見つかるのですが、当時は(今でも?)私のような素人にも読みやすい?ものを見つけることができませんでした。...

RDF, OWLの面白さを知る本(Semantic Web for the Working Ontologist)

前の記事『 Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2) 』では、Python と Owlready 2 を使った、OWL を扱うプログラミング本を紹介しました。 今回は、OWL などを使ったプログラミングの前に、そもそも RDF や OWL のモデルをどのように構築すべきか、という設計に関するヒントが詰まった本『実践セマンティックWeb(Semantic Web for the Working Ontologist)』の紹介です。 Semantic Web for the Working Ontologist: Effective Modeling for Linked Data, RDFS, and OWL (ACM Books) (English Edition) (Amazonで書籍情報を表示) OWL や RDF などのセマンティックWeb系の技術は、業務アプリの設計とは無縁のように思われそうですが、設計あるいはモデリングの観点から見ると、本質的なところは同じような気がしています。 特に、OWL や RDF は、プログラミング言語のような処理を記述するものではなく、知識(データ)を記述するものなので、リレーショナルデータベースを中心としたデータ設計あるいはモデリングを考えるときなど、ヒントも多くて、とても刺激的な内容だと思います。 (推論を含めると、データの表現だけでなく、処理も含んでいると思いますけど。) <本の内容> 『Semantic Web for the Working Ontologist』は、版を重ねて最新版は第3版です。 初版から10年以上たっても本の改訂が続いているということだけでも凄さが分かります。 ここでは、初版から目次(内容)をみながら、セマンティックWeb技術の着実な(急激ではない?)進化を見てみます。 実践セマンティックWeb―RDF/RDFS/OWLによるオントロジー設計ガイド Dean Allemang (原著), James Hendler (原著),萩野 達也 (監修), セマンティックWeb委員会 (翻訳) 初版(日本語版:発...

Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2)

Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2 (English Edition) Lamy Jean-Baptiste (著) Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2 (Amazonで書籍情報を表示) 最近楽しみながら読んだ本のご紹介です。 オントロジーやOWL(Web Ontology Language)、セマンティックウェブといった単語は、知っている人は詳しく知っていると思いますが、ご存知ない方も多い気がします。 これらについては長くなるので割愛しますが、ネットでこれらの用語を検索して調べてみると、学術分野っぽい説明などが多くて、縁遠い印象を受けるかもしれません。 しかしながら、データの表現力を高めて応用するための技術だと考えれば、一般的なアプリ制作においても、(はまれば)とても身近で役立つ価値の高い技術だと思っています。 仮にオントロジーだとか知識表現に全く興味が無くても、プログラミングの引き出しを増やすというだけでも意味があると思います。 この本は、そんなオントロジーやOWLの扱い方を、Python のライブラリ Owlready2 を用いてハンズオンっぽく身に付けることができます。 残念ながら英語の本ですが(現在日本語訳はないと思いますが)、私でも理解できる程度の平易な文章で書かれており、それもあってか Google 翻訳を利用すれば、かなり良い日本語に翻訳してくれますので(笑)、英語の壁は高くありません。 (実際には、本文が理解できなくても、コード例を見れば理解できることが多いと思います。) <本の内容> 以下は目次とざっくりとした内容です。 Chapter 1: Introduction ontology-oriented programming(オントロジー指向プログラミング)への動機付けなどの紹介です。 Chapter 2: The Python language: Adapt a snake! Python 言語のざっくりとした説明です。 Chapter...