| @@ -15,13 +15,13 @@ Modules in ABL-Package | |||
| ABL-Package is an implementation of `Abductive Learning <../Overview/Abductive-Learning.html>`_, | |||
| designed to harmoniously integrate and balance the use of machine learning and | |||
| logical reasoning within a unified model. As depicted below, the | |||
| ABL-Package comprises three primary modules: **Data**, **Learning**, and | |||
| ABL-Package comprises three primary parts: **Data**, **Learning**, and | |||
| **Reasoning**, corresponding to the three pivotal components in current | |||
| AI: data, models, and knowledge. | |||
| .. image:: ../img/ABL-Package.png | |||
| **Data** module manages the storage, operation, and evaluation of data. | |||
| **Data** part manages the storage, operation, and evaluation of data. | |||
| It first features class ``ListData`` (derived from base class | |||
| ``BaseDataElement``), which defines the data structures used in | |||
| Abductive Learning, and comprises common data operations like insertion, | |||
| @@ -30,24 +30,24 @@ Metrics, including class ``SymbolMetric`` and ``ReasoningMetric`` (both | |||
| specialized metrics derived from base class ``BaseMetric``), outline | |||
| methods for evaluating model quality from a data perspective. | |||
| **Learning** module is responsible for the construction, deployment, and | |||
| training of machine learning models. In this module, the class | |||
| **Learning** part is responsible for the construction, deployment, and | |||
| training of machine learning models. In this part, the class | |||
| ``ABLModel`` is the central class that encapsulates the machine learning | |||
| model, which may incorporate models such as those based on Scikit-learn | |||
| or a neural network framework using constructed by class ``BasicNN``. | |||
| **Reasoning** module consists of the reasoning part of the Abductive | |||
| learning. The class ``KBBase`` allows users to define domain | |||
| knowledge base. For diverse types of knowledge, we also offer | |||
| **Reasoning** part is responsible for the construction of domain knowledge | |||
| and performing reasoning. In this part, the class ``KBBase`` allows users to | |||
| define domain knowledge base. For diverse types of knowledge, we also offer | |||
| implementations like ``GroundKB`` and ``PrologKB``, e.g., the latter | |||
| enables knowledge base to be imported in the form of a Prolog files. | |||
| Upon building the knowledge base, the class ``Reasoner`` is | |||
| responsible for minimizing the inconsistency between the knowledge base | |||
| and learning models. | |||
| Finally, the integration of these three modules occurs through | |||
| **Bridge** module, which features class ``SimpleBridge`` (derived from base | |||
| class ``BaseBridge``). Bridge module synthesize data, learning, and | |||
| Finally, the integration of these three parts occurs through | |||
| **Bridge** part, which features class ``SimpleBridge`` (derived from base | |||
| class ``BaseBridge``). Bridge part synthesize data, learning, and | |||
| reasoning, and facilitate the training and testing of the entire | |||
| Abductive Learning framework. | |||
| @@ -16,7 +16,7 @@ In **Abductive Learning (ABL)**, we assume that, in addition to data, | |||
| there is also a knowledge base :math:`\mathcal{KB}` containing | |||
| domain knowledge at our disposal. We aim for the classifier :math:`f` | |||
| to make correct predictions on data instances :math:`\{x_1,\dots,x_m\}`, | |||
| and meanwhile, the logical facts grounded by the prediction | |||
| and meanwhile, the pseudo-groundings grounded by the prediction | |||
| :math:`\left\{f(\boldsymbol{x}_1), \ldots, f(\boldsymbol{x}_m)\right\}` | |||
| should be compatible with :math:`\mathcal{KB}`. | |||
| @@ -26,22 +26,22 @@ The process of ABL is as follows: | |||
| pseudo-labels | |||
| :math:`\left\{f(\boldsymbol{x}_1), \ldots, f(\boldsymbol{x}_m)\right\}` | |||
| are predicted by a data-driven classifier model. | |||
| 2. These pseudo-labels are then converted into logical facts | |||
| 2. These pseudo-labels are then converted into pseudo-groundings | |||
| :math:`\mathcal{O}` that are acceptable for logical reasoning. | |||
| 3. Conduct joint reasoning with :math:`\mathcal{KB}` to find any | |||
| inconsistencies. If found, the logical facts that lead to minimal | |||
| inconsistencies. If found, the pseudo-groundings that lead to minimal | |||
| inconsistency can be identified. | |||
| 4. Modify the identified facts through **abductive reasoning** (or, **abduction**), | |||
| returning revised logical facts :math:`\Delta(\mathcal{O})` which are | |||
| returning revised pseudo-groundings :math:`\Delta(\mathcal{O})` which are | |||
| compatible with :math:`\mathcal{KB}`. | |||
| 5. These revised logical facts are converted back to the form of | |||
| 5. These revised pseudo-groundings are converted back to the form of | |||
| pseudo-labels, and used like ground-truth labels in conventional | |||
| supervised learning to train a new classifier. | |||
| 6. The new classifier will then be adopted to replace the previous one | |||
| in the next iteration. | |||
| This above process repeats until the classifier is no longer updated, or | |||
| the logical facts :math:`\mathcal{O}` are compatible with the knowledge | |||
| the pseudo-groundings :math:`\mathcal{O}` are compatible with the knowledge | |||
| base. | |||
| The following figure illustrates this process: | |||
| @@ -57,6 +57,8 @@ is dual-driven by both data and domain knowledge, integrating and | |||
| balancing the use of machine learning and logical reasoning in a unified | |||
| model. | |||
| For more information about ABL, please refer to: [Zhou, 2019](https://link.springer.com/epdf/10.1007/s11432-018-9801-4?author_access_token=jgJe1Ox3Mk-K7ORSnX7jtfe4RwlQNchNByi7wbcMAY7_PxTx-xNLP7Lp0mIZ04ORp3VG4wioIBHSCIAO3B_TBJkj87YzapmdnYVSQvgBIO3aEpQWppxZG25KolINetygc2W_Cj2gtoBdiG_J1hU3pA==) and [Zhou and Huang, 2022](https://www.lamda.nju.edu.cn/publication/chap_ABL.pdf). | |||
| .. _abd: | |||
| .. admonition:: What is Abductive Reasoning? | |||
| @@ -68,7 +70,7 @@ model. | |||
| reasoning may arrive at conclusions that are plausible but not conclusively | |||
| proven. | |||
| In Abductive Learning, given :math:`\mathcal{KB}` (typically expressed | |||
| In ABL, given :math:`\mathcal{KB}` (typically expressed | |||
| in first-order logic clauses), one can perform both deductive and | |||
| abductive reasoning. Deductive reasoning allows deriving | |||
| :math:`b` from :math:`a`, while abductive reasoning allows inferring | |||
| @@ -5,7 +5,14 @@ ABL is distributed on `PyPI <https://pypi.org/>`__ and can be installed with ``p | |||
| .. code:: console | |||
| $ pip install abl | |||
| # (TODO) | |||
| $ pip install abl | |||
| For testing purposes, you can install it using: | |||
| .. code:: console | |||
| $ pip install -i https://test.pypi.org/simple/ abl | |||
| Alternatively, to install ABL by source code, | |||
| sequentially run following commands in your terminal/command line. | |||
| @@ -17,7 +17,14 @@ ABL is distributed on `PyPI <https://pypi.org/>`__ and can be installed with ``p | |||
| .. code:: console | |||
| $ pip install abl | |||
| # (TODO) | |||
| $ pip install abl | |||
| For testing purposes, you can install it using: | |||
| .. code:: console | |||
| $ pip install -i https://test.pypi.org/simple/ abl | |||
| Alternatively, to install ABL by source code, | |||
| sequentially run following commands in your terminal/command line. | |||
| @@ -27,10 +34,3 @@ sequentially run following commands in your terminal/command line. | |||
| $ git clone https://github.com/AbductiveLearning/ABL-Package.git | |||
| $ cd ABL-Package | |||
| $ pip install -v -e . | |||
| Releases | |||
| -------- | |||
| `release 0.1`_ | |||
| .. _release 0.1: https://github.com/AbductiveLearning/ABL-Package/releases/tag/v0.1 | |||