diff --git a/README.md b/README.md
index a9fdab2..2cb09eb 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,9 @@ We provide several examples in `examples/`. Each example is stored in a separate
We use the MNIST Addition task as a quick start example. In this task, pairs of MNIST handwritten images and their sums are given, alongwith a domain knowledge base which contains information on how to perform addition operations. Our objective is to input a pair of handwritten images and accurately determine their sum.
-### Working with Data
+
+Working with Data
+
ABL-Package requires data in the format of `(X, gt_pseudo_label, Y)` where `X` is a list of input examples containing instances, `gt_pseudo_label` is the ground-truth label of each example in `X` and `Y` is the ground-truth reasoning result of each example in `X`. Note that `gt_pseudo_label` is only used to evaluate the machine learning model's performance but not to train it.
@@ -90,7 +92,11 @@ train_data = get_dataset(train=True)
test_data = get_dataset(train=False)
```
-### Building the Learning Part
+
+
+
+Building the Learning Part
+
Learning part is constructed by first defining a base model for machine learning. The ABL-Package offers considerable flexibility, supporting any base model that conforms to the scikit-learn style (which requires the implementation of fit and predict methods), or a PyTorch-based neural network (which has defined the architecture and implemented forward method). In this example, we build a simple LeNet5 network as the base model.
@@ -121,7 +127,11 @@ from abl.learning import ABLModel
​model = ABLModel(base_model)
```
-### Building the Reasoning Part
+
+
+
+Building the Reasoning Part
+
To build the reasoning part, we first define a knowledge base by creating a subclass of `KBBase`. In the subclass, we initialize the `pseudo_label_list` parameter and override the `logic_forward` method, which specifies how to perform (deductive) reasoning that processes pseudo-labels of an example to the corresponding reasoning result. Specifically, for the MNIST Addition task, this `logic_forward` method is tailored to execute the sum operation.
@@ -146,7 +156,11 @@ from abl.reasoning import Reasoner
reasoner = Reasoner(kb)
```
-### Building Evaluation Metrics
+
+
+
+Building Evaluation Metrics
+
ABL-Package provides two basic metrics, namely `SymbolAccuracy` and `ReasoningMetric`, which are used to evaluate the accuracy of the machine learning model's predictions and the accuracy of the `logic_forward` results, respectively.
@@ -156,7 +170,11 @@ from abl.data.evaluation import ReasoningMetric, SymbolAccuracy
metric_list = [SymbolAccuracy(), ReasoningMetric(kb=kb)]
```
-### Bridging Learning and Reasoning
+
+
+
+Bridging Learning and Reasoning
+
Now, we use `SimpleBridge` to combine learning and reasoning in a
unified ABL framework.
@@ -174,6 +192,8 @@ Finally, we proceed with training and testing.
bridge.test(test_data)
```
+
+
## References
For more information about ABL, please refer to: [Zhou, 2019](http://scis.scichina.com/en/2019/076101.pdf) and [Zhou and Huang, 2022](https://www.lamda.nju.edu.cn/publication/chap_ABL.pdf).