Skip to content

Commit afb5618

Browse files
Release 1.3.0
1 parent 2f4de20 commit afb5618

File tree

5 files changed

+69
-81
lines changed

5 files changed

+69
-81
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>org.aika-software</groupId>
66
<artifactId>aika</artifactId>
77
<packaging>jar</packaging>
8-
<version>1.2.2-SNAPSHOT</version>
8+
<version>1.3.0</version>
99
<name>aika</name>
1010
<url>http://aika.network</url>
1111
<description>An artificial intelligence for knowledge acquisition</description>
@@ -30,7 +30,7 @@
3030
<url>https://github.com/aika-algorithm/aika</url>
3131
<connection>scm:git:git://github.com/aika-algorithm/aika.git</connection>
3232
<developerConnection>scm:git:[email protected]:aika-algorithm/aika.git</developerConnection>
33-
<tag>aika-1.1.0</tag>
33+
<tag>aika-1.3.0</tag>
3434
</scm>
3535

3636

src/main/java/network/aika/neuron/activation/Activation.java

-1
Original file line numberDiff line numberDiff line change
@@ -955,7 +955,6 @@ public enum Mode {OLD, NEW}
955955

956956

957957
public void saveState(SearchNode sn) {
958-
currentOption.fixed = true;
959958
currentOption = new Option(currentOption, this, sn);
960959

961960
if (sn.getModifiedActivations() != null) {

src/main/java/network/aika/neuron/activation/search/Option.java

+4-8
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,17 @@ public class Option implements Comparable<Option> {
4141

4242
public static final State INITIAL_STATE = new State(0.0, Double.MAX_VALUE, 0.0, null, 0.0);
4343

44-
public State state = INITIAL_STATE;
44+
private State state = INITIAL_STATE;
4545

4646
public Activation act;
4747
public SearchNode searchNode;
4848

49-
public Option parent;
50-
public List<Option> children = new ArrayList<>();
51-
52-
public boolean fixed = false;
49+
private Option parent;
50+
private List<Option> children = new ArrayList<>();
5351

5452
public Decision decision;
5553

56-
public double weight;
54+
private double weight;
5755
public double remainingWeight;
5856
public int cacheFactor = 1;
5957
public double p;
@@ -81,7 +79,6 @@ public Option(Option parent, Activation act, SearchNode sn) {
8179

8280

8381
public boolean setState(State s) {
84-
assert !fixed;
8582
if(state.equalsWithWeights(s)) {
8683
return false;
8784
}
@@ -114,7 +111,6 @@ public boolean isQueued() {
114111

115112
public void restoreState(Activation.Mode m) {
116113
act.currentOption = (m == Activation.Mode.OLD ? parent : this);
117-
assert act.currentOption.fixed;
118114
}
119115

120116

src/site/resources.html

+12-4
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ <h2>Related Resources</h2>
5656
<p>
5757
<a href="https://medium.com/p/on-integrating-symbolic-inference-into-deep-neural-networks-22ed13ebbba9?fbclid=IwAR0Akwh1d8LCnlIQjvalGrmhcsSjzGl825dm3GhGPJ7PTY3cM9rHDkVtla0">On integrating symbolic inference into deep neural networks</a><br/>
5858

59-
Workshop: <a href="http://aika.network/Aika-Workshop.pdf">Einführung in den Aika-Algorithmus</a><br/>
60-
6159
<a href="https://data-science-blog.com/blog/2017/10/25/aika-ein-semantisches-neuronales-netzwerk/">A data science blog article about the Aika algorithm written in German.</a><br/>
6260

6361
<a href="https://jaxenter.de/texte-verstehen-mit-machine-learning-58487">A JAXenter article about the Aika algorithm.</a><br/>
@@ -69,16 +67,26 @@ <h2>Related Resources</h2>
6967

7068
<h2>Download</h2>
7169
<p>
72-
<a href="http://aika.network/download/aika-1.2.0.jar">Version 1.2.0</a> <br/>
70+
<a href="http://aika.network/download/aika-1.3.0.jar">Version 1.3.0</a> <br/>
7371
</p>
7472

7573
<h2>API Documentation</h2>
7674

7775
<p>
78-
<a href="http://aika.network/apidocs/index.html">JavaDoc v1.2.0</a>
76+
<a href="http://aika.network/apidocs/index.html">JavaDoc v1.3.0</a>
7977
</p>
8078

8179
<h2>Release Notes</h2>
80+
<h3>Aika Version 1.3.0 (2019-07-31)</h3>
81+
<ul>
82+
<li>
83+
Major simplification of the interpretation search.
84+
</li>
85+
<li>
86+
Code reorganization.
87+
</li>
88+
</ul>
89+
8290
<h3>Aika Version 1.2.0 (2019-06-07)</h3>
8391
<ul>
8492
<li>

src/site/usage.html

+51-66
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ <h3>Maven POM</h3>
5858
&lt;dependency&gt;<br/>
5959
&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.aika-software&lt;&#47;groupId&gt;<br/>
6060
&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;aika&lt;&#47;artifactId&gt;<br/>
61-
&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;1.1.0&lt;&#47;version&gt;<br/>
61+
&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;1.3.0&lt;&#47;version&gt;<br/>
6262
&lt;&#47;dependency&gt;<br/>
6363
</b>
6464
</p>
@@ -80,7 +80,7 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
8080
HashMap&lt;String, Neuron&gt; inputNeurons = new HashMap<>();
8181

8282
for(String word: new String[] {"jackson", "cook"}) {
83-
Neuron in = m.createNeuron("W-" + word);
83+
Neuron in = m.createNeuron("W-" + word, INPUT);
8484

8585
inputNeurons.put(word, in);
8686
}
@@ -93,9 +93,9 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
9393
<div class="prettyprint-code">
9494
<pre class="prettyprint">
9595
<code class="language-java">
96-
Neuron forenameCategory = m.createNeuron("C-forename");
97-
Neuron surnameCategory = m.createNeuron("C-surname");
98-
Neuron inhibitingN = m.createNeuron("INHIB");
96+
Neuron forenameCategory = m.createNeuron("C-forename", INHIBITORY, LIMITED_RECTIFIED_LINEAR_UNIT);
97+
Neuron surnameCategory = m.createNeuron("C-surname", INHIBITORY, LIMITED_RECTIFIED_LINEAR_UNIT);
98+
Neuron inhibitingN = m.createNeuron("INHIB", INHIBITORY, LIMITED_RECTIFIED_LINEAR_UNIT);
9999
</code>
100100
</pre>
101101
</div>
@@ -114,10 +114,8 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
114114
<pre class="prettyprint">
115115
<code class="language-java">
116116
Neuron cookSurnameEntity = Neuron.init(
117-
m.createNeuron("E-cook (surname)"),
117+
m.createNeuron("E-cook (surname)", EXCITATORY, RECTIFIED_HYPERBOLIC_TANGENT),
118118
6.0, // adjusts the bias
119-
RECTIFIED_HYPERBOLIC_TANGENT,
120-
EXCITATORY,
121119
new Synapse.Builder() // Requires the word to be recognized
122120
.setSynapseId(0)
123121
.setNeuron(inputNeurons.get("cook"))
@@ -165,8 +163,6 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
165163
Neuron.init(
166164
forenameCategory,
167165
0.0,
168-
RECTIFIED_LINEAR_UNIT,
169-
EXCITATORY,
170166
new Synapse.Builder() // In this example there is only one forename considered.
171167
.setSynapseId(0)
172168
.setNeuron(jacksonForenameEntity)
@@ -180,8 +176,6 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
180176
Neuron.init(
181177
surnameCategory,
182178
0.0,
183-
RECTIFIED_LINEAR_UNIT,
184-
EXCITATORY,
185179
new Synapse.Builder()
186180
.setSynapseId(0)
187181
.setNeuron(cookSurnameEntity)
@@ -204,8 +198,6 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
204198
Neuron.init(
205199
inhibitingN,
206200
0.0,
207-
RECTIFIED_LINEAR_UNIT,
208-
INHIBITORY,
209201
new Synapse.Builder().setNeuron(cookProfessionEntity)
210202
.setSynapseId(0)
211203
.setWeight(1.0)
@@ -279,23 +271,27 @@ <h3>Named Entity Recognition / Entity Resolution example</h3>
279271
<pre class="prettyprint">
280272
<code class="language-java">
281273

282-
Activation ID - Final Decision - Slots | Identity - Neuron Label - Logic Layer - Upper Bound -
274+
Activation ID - Neuron Type - Final Decision - Slots (Ranges) | Identity - Neuron Label - Logic Layer - Upper Bound -
283275
Value | Sum | Weight - Input Value | Target Value
284276

285-
...
286-
3 - SELECTED - (0:4, 1:12) () - C-forename - OR[] - V:1.0 Net:1.0 W:0.0
287-
4 - SELECTED - (0:4, 1:12) () - INHIB - OR[] - V:1.0 Net:1.0 W:0.0
288-
1 - SELECTED - (0:4, 1:12) () - W-jackson - OR[] - V:1.0 Net:0.0 W:0.0 - IV:1.0
289-
2 - SELECTED - (0:4, 1:12) () - E-jackson (forename) - V:1.0 Net:6.0 W:6.0
290-
5 - EXCLUDED - (0:4, 1:12) () - E-jackson (city) -
291-
8 - SELECTED - (0:12, 1:17) () - C-surname - OR[] - V:1.0 Net:1.0 W:0.0
292-
9 - SELECTED - (0:12, 1:17) () - INHIB - OR[] - V:1.0 Net:1.0 W:0.0
293-
6 - SELECTED - (0:12, 1:17) () - W-cook - OR[] - V:1.0 Net:0.0 W:0.0 - IV:1.0
294-
7 - SELECTED - (0:12, 1:17) () - E-cook (surname) - V:1.0 Net:8.0 W:8.0
295-
10 - EXCLUDED - (0:12, 1:17) () - E-cook (profession) -
296-
...
297-
298-
Final SearchNode:8 WeightSum:13.999
277+
0 INPUT - - (0:0, 1:4) "mr. " () - W-mr. - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
278+
4 INHIBITORY - - (0:4, 1:12) "jackson " () - C-forename - V:1.0 UB:1.0 Net:1.0 W:0.0
279+
5 INHIBITORY - - (0:4, 1:12) "jackson " () - INHIB - V:1.0 UB:1.0 Net:1.0 W:0.0
280+
1 INPUT - - (0:4, 1:12) "jackson " () - W-jackson - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
281+
2 EXCITATORY - SELECTED - (0:4, 1:12) "jackson " () - E-jackson (forename) - V:1.0 UB:1.0 Net:6.0 W:6.0
282+
3 EXCITATORY - EXCLUDED - (0:4, 1:12) "jackson " () - E-jackson (city) - V:0.0 UB:0.0 Net:-95.0 W:0.0
283+
9 INHIBITORY - - (0:12, 1:17) "cook " () - C-surname - V:1.0 UB:1.0 Net:1.0 W:0.0
284+
10 INHIBITORY - - (0:12, 1:17) "cook " () - INHIB - V:1.0 UB:1.0 Net:1.0 W:0.0
285+
6 INPUT - - (0:12, 1:17) "cook " () - W-cook - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
286+
7 EXCITATORY - SELECTED - (0:12, 1:17) "cook " () - E-cook (surname) - V:1.0 UB:1.0 Net:6.0 W:6.0
287+
8 EXCITATORY - EXCLUDED - (0:12, 1:17) "cook " () - E-cook (profession) - V:0.0 UB:0.0 Net:-95.0 W:0.0
288+
11 INPUT - - (0:17, 1:21) "was " () - W-was - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
289+
12 INPUT - - (0:21, 1:26) "born " () - W-born - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
290+
13 INPUT - - (0:26, 1:29) "in " () - W-in - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
291+
14 INPUT - - (0:29, 1:33) "new " () - W-new - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
292+
15 INPUT - - (0:33, 1:38) "york " () - W-york - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
293+
294+
Final SearchNode:6 WeightSum:12.0
299295
</code>
300296
</pre>
301297
</div>
@@ -316,19 +312,17 @@ <h3>Mutual exclusion example</h3>
316312
Model m = new Model();
317313

318314
// Create the input neurons for the network.
319-
Neuron inA = m.createNeuron("IN-A");
320-
Neuron inB = m.createNeuron("IN-B");
321-
Neuron inC = m.createNeuron("IN-C");
315+
Neuron inA = m.createNeuron("IN-A", INPUT);
316+
Neuron inB = m.createNeuron("IN-B", INPUT);
317+
Neuron inC = m.createNeuron("IN-C", INPUT);
322318

323319
// Instantiate the inhibitory neuron. Its inputs will be added later on.
324320
Neuron inhibN = m.createNeuron("INHIB");
325321

326322
// Create three neurons that might be suppressed by the inhibitory neuron.
327323
Neuron pA = Neuron.init(
328-
m.createNeuron("A"),
324+
m.createNeuron("A", EXCITATORY),
329325
3.0,
330-
RECTIFIED_HYPERBOLIC_TANGENT,
331-
EXCITATORY,
332326
new Synapse.Builder()
333327
.setSynapseId(0)
334328
.setNeuron(inA)
@@ -352,10 +346,8 @@ <h3>Mutual exclusion example</h3>
352346
);
353347

354348
Neuron pB = Neuron.init(
355-
m.createNeuron("B"),
349+
m.createNeuron("B", EXCITATORY),
356350
5.0,
357-
RECTIFIED_HYPERBOLIC_TANGENT,
358-
EXCITATORY,
359351
new Synapse.Builder()
360352
.setSynapseId(0)
361353
.setNeuron(inB)
@@ -379,10 +371,8 @@ <h3>Mutual exclusion example</h3>
379371
);
380372

381373
Neuron pC = Neuron.init(
382-
m.createNeuron("C"),
374+
m.createNeuron("C", EXCITATORY),
383375
2.0,
384-
RECTIFIED_HYPERBOLIC_TANGENT,
385-
EXCITATORY,
386376
new Synapse.Builder()
387377
.setSynapseId(0)
388378
.setNeuron(inC)
@@ -409,8 +399,6 @@ <h3>Mutual exclusion example</h3>
409399
Neuron.init(
410400
inhibN,
411401
0.0,
412-
RECTIFIED_LINEAR_UNIT,
413-
INHIBITORY,
414402
new Synapse.Builder()
415403
.setSynapseId(0)
416404
.setNeuron(pA)
@@ -443,10 +431,9 @@ <h3>Mutual exclusion example</h3>
443431
.setRelation(EQUALS)
444432
);
445433

446-
Neuron outN = Neuron.init(m.createNeuron("OUT"),
434+
Neuron outN = Neuron.init(
435+
m.createNeuron("OUT", EXCITATORY),
447436
0.0,
448-
RECTIFIED_HYPERBOLIC_TANGENT,
449-
EXCITATORY,
450437
new Synapse.Builder()
451438
.setSynapseId(0)
452439
.setNeuron(pB)
@@ -486,17 +473,17 @@ <h3>Mutual exclusion example</h3>
486473

487474
<pre class="prettyprint">
488475
<code class="language-java">
489-
Activation ID - Final Decision - Slots | Identity - Neuron Label - Upper Bound -
476+
Activation ID - Neuron Type - Final Decision - Slots | Identity - Neuron Label - Upper Bound -
490477
Value | Net | Weight - Input Value | Target Value
491478

492-
0 - SELECTED - (0:0, 1:1) () - IN-A - V:1.0 Net:0.0 W:0.0 - IV:1.0
493-
3 - SELECTED - (0:0, 1:1) () - IN-B - V:1.0 Net:0.0 W:0.0 - IV:1.0
494-
6 - SELECTED - (0:0, 1:1) () - IN-C - V:1.0 Net:0.0 W:0.0 - IV:1.0
495-
2 - SELECTED - (0:0, 1:1) () - INHIB - V:1.0 Net:1.0 W:0.0
496-
1 - EXCLUDED - (0:0, 1:1) () - A -
497-
4 - SELECTED - (0:0, 1:1) () - B - V:1.0 Net:5.0 W:5.0
498-
7 - EXCLUDED - (0:0, 1:1) () - C -
499-
5 - SELECTED - (0:0, 1:1) () - OUT - V:0.762 Net:1.0 W:0.0
479+
0 INPUT - - (0:0, 1:1) "f" () - IN-A - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
480+
3 INPUT - - (0:0, 1:1) "f" () - IN-B - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
481+
6 INPUT - - (0:0, 1:1) "f" () - IN-C - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
482+
2 INHIBITORY - - (0:0, 1:1) "f" () - INHIB - V:1.0 UB:1.0 Net:1.0 W:0.0
483+
1 EXCITATORY - EXCLUDED - (0:0, 1:1) "f" () - A - V:0.0 UB:0.0 Net:-97.0 W:0.0
484+
4 EXCITATORY - SELECTED - (0:0, 1:1) "f" () - B - V:1.0 UB:1.0 Net:5.0 W:5.0
485+
7 EXCITATORY - EXCLUDED - (0:0, 1:1) "f" () - C - V:0.0 UB:0.0 Net:-98.0 W:0.0
486+
5 INHIBITORY - - (0:0, 1:1) "f" () - OUT - V:0.762 UB:0.762 Net:1.0 W:0.0
500487

501488
Final SearchNode:10 WeightSum:5.0
502489
</code>
@@ -518,16 +505,14 @@ <h3>Pattern matching example</h3>
518505

519506
// Create an input neuron for every letter in this example.
520507
for(char c: new char[] {'a', 'b', 'c', 'd', 'e', 'f'}) {
521-
Neuron in = m.createNeuron(c + "");
508+
Neuron in = m.createNeuron(c + "", INPUT);
522509

523510
inputNeurons.put(c, in);
524511
}
525512

526513
Neuron pattern = Neuron.init(
527-
m.createNeuron("BCDE"),
514+
m.createNeuron("BCDE", EXCITATORY),
528515
5.0,
529-
RECTIFIED_HYPERBOLIC_TANGENT,
530-
EXCITATORY,
531516
new Synapse.Builder()
532517
.setSynapseId(0)
533518
.setNeuron(inputNeurons.get('b'))
@@ -605,15 +590,15 @@ <h3>Pattern matching example</h3>
605590
<div class="prettyprint-code">
606591
<pre class="prettyprint">
607592
<code class="language-java">
608-
Activation ID - Final Decision - Slots | Identity - Neuron Label - Upper Bound -
593+
Activation ID - Neuron Type - Final Decision - Slots | Identity - Neuron Label - Upper Bound -
609594
Value | Net | Weight - Input Value | Target Value
610595

611-
0 - SELECTED - (0:0, 1:2) () - a - V:1.0 Net:0.0 W:0.0 - IV:1.0
612-
1 - SELECTED - (0:2, 1:4) () - b - V:1.0 Net:0.0 W:0.0 - IV:1.0
613-
5 - SELECTED - (0:2, 1:10) () - BCDE - V:1.0 Net:5.0 W:0.0
614-
2 - SELECTED - (0:4, 1:6) () - c - V:1.0 Net:0.0 W:0.0 - IV:1.0
615-
3 - SELECTED - (0:6, 1:8) () - d - V:1.0 Net:0.0 W:0.0 - IV:1.0
616-
4 - SELECTED - (0:8, 1:10) () - e - V:1.0 Net:0.0 W:0.0 - IV:1.0
596+
0 INPUT - - (0:0, 1:2) "a " () - a - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
597+
1 INPUT - - (0:2, 1:4) "b " () - b - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
598+
5 EXCITATORY - SELECTED - (0:2, 1:10) "b c d e " () - BCDE - V:1.0 UB:1.0 Net:5.0 W:0.0
599+
2 INPUT - - (0:4, 1:6) "c " () - c - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
600+
3 INPUT - - (0:6, 1:8) "d " () - d - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
601+
4 INPUT - - (0:8, 1:10) "e " () - e - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
617602

618603
Final SearchNode:1 WeightSum:0.0
619604
</code>

0 commit comments

Comments
 (0)