Skip to content

Commit 98508a7

Browse files
Big refactoring and cleanup
1 parent fce6532 commit 98508a7

File tree

215 files changed

+4878
-12232
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

215 files changed

+4878
-12232
lines changed

.gitignore

Lines changed: 49 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,51 @@
1-
# Maven build files
2-
target
1+
# These are some examples of commonly ignored file patterns.
2+
# You should customize this list as applicable to your project.
3+
# Learn more about .gitignore:
4+
# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
5+
6+
# Node artifact files
7+
node_modules/
8+
dist/
9+
10+
# Compiled Java class files
11+
*.class
12+
13+
# Compiled Python bytecode
14+
*.py[cod]
15+
16+
# Log files
317
*.log
4-
maven-eclipse.xml
5-
build.properties
6-
site-content
7-
*~
8-
9-
# IntelliJ IDEA files
10-
.idea
11-
.iws
12-
*.iml
13-
*.ipr
14-
15-
# Eclipse files
16-
.settings
17-
.classpath
18-
.project
19-
.externalToolBuilders
20-
.checkstyle
18+
19+
# Package files
20+
*.jar
21+
22+
# Maven
23+
target/
24+
dist/
25+
/.flattened-pom.xml
26+
27+
# JetBrains IDE
28+
.idea/
29+
30+
# Unit test reports
31+
TEST*.xml
32+
33+
# Generated by MacOS
34+
.DS_Store
35+
36+
# Generated by Windows
37+
Thumbs.db
38+
39+
# Applications
40+
*.app
41+
*.exe
42+
*.war
43+
44+
# Large media files
45+
*.mp4
46+
*.tiff
47+
*.avi
48+
*.flv
49+
*.mov
50+
*.wmv
2151

README.md

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,4 @@
11
# Project status
2-
During the past one and a half years there have been many changes to the architecture of the core algorithm. Most notably the introduction of binding-signals as the underlying mechanism for the linking process and the introduction of updatable fields which allow for a more descriptive way to implement the mathematics within the project. These changes are still work-in-progress, but will hopefully soon converge to a more stable state.
32

43
# About the AIKA Neural Network
5-
AIKA (**A**rtificial **I**ntelligence for **K**nowledge **A**cquisition) is a new neuronType of artificial neural network designed to mimic the behavior of a biological brain more closely and to bridge the gap to classical AI. A key design decision in the AIKA network is to conceptually separate the activations from their neurons, meaning that there are two separate graphs. One graph consisting of neurons and synapses representing the knowledge the network has already acquired and another graph consisting of activations and links describing the information the network was able to infer about a concrete input data set. There is a one-to-many relation between the neurons and the activations. For example, there might be a neuron representing a word or a specific meaning of a word, but there might be several activations of this neuron, each representing an occurrence of this word within the input data set. A consequence of this decision is that we must give up on the idea of a fixed layered topology for the network, since the sequence in which the activations are fired depends on the input data set. Within the activation network, each activation is grounded within the input data set, even if there are several activations in between. This means links between activations server multiple purposes:
6-
- They propagate the activation value.
7-
- They propagate the binding-signal, that is used for the linking process.
8-
- They establish an approximate causal relation through the fired timestamps of their input and output activations.
9-
- They allow the training gradient to be propagated backwards.
10-
- Negative feedback links create mutually exclusive branches within the activations network.
11-
- Positive feedback links allow the binding neurons of a pattern neuron ensemble to support each other, by feeding the activation value of the patten neuron back to its input binding-neurons.
12-
13-
The AIKA network uses four different types of neurons:
14-
- Pattern-Neurons (PN)
15-
- Binding-Neurons (BN)
16-
- Inhibitory-Neurons (IN)
17-
- Category-Neurons (CN)
18-
19-
The pattern-neurons and the binding-neurons are both conjunctive in nature while the inhibitory-neurons and the
20-
category-neurons are disjunctive. The binding-neurons are kind of the glue code of the whole network. On the one hand,
21-
they bind the input-features of a pattern to the pattern-neuron and on the other hand receive negative feedback synapses
22-
from the inhibitory neurons which allow them to either be suppressed by an opposing pattern or allow themselves to
23-
suppress another conflicting pattern. Like the neuron types there are also several types of synapses, depending on
24-
which types of neurons they connect. For example, the input synapses of an inhibitory neuron are always linked to
25-
binding-neurons, while the input synapses of category-neurons are always linked to pattern-neurons.
26-
27-
The following types of synapses exist within the **AIKA** network:
28-
29-
- **PrimaryInputSynapse** ((PN|CN) -> BN)
30-
- **RelatedInputSynapse** (BN -> BN)
31-
- **SamePatternSynapse** (BN -> BN)
32-
- **PositiveFeedbackSynapse** (PN -> BN)
33-
- **NegativeFeedbackSynapse** (IN -> BN)
34-
- **ReversePatternSynapse** (BN -> BN)
35-
- **PatternSynapse** (BN -> PN)
36-
- **CategorySynapse** (PN -> CN)
37-
- **InhibitorySynapse** (BN -> IN)
38-
39-
The binding-signal that is propagated along linked synapses carries a state consisting of either of these three values: **SAME**, **INPUT**, **BRANCH**
40-
41-
**SAME** indicates that the binding signal has not yet left its originating neuron pattern ensemble and is used to bind the binding-activations to the current pattern. **INPUT** indicates that the binding
42-
signal was propagated to a dependant pattern neuron ensemble, for instance through the PrimaryInputSynapse or the RelatedInputSynapse.
43-
**BRANCH** indicates, that the binding signal originated from a binding activation instead of a pattern activation.
44-
45-
As already mentioned, the binding-neurons of a pattern neuron ensemble are used to bind this pattern to its input
46-
features. To verify that all the input-features occurred in the correct relation to each other the SamePatternSynapse
47-
is used. The **SamePatternSynapse** connects two binding-neurons within the same pattern neuron ensemble.
48-
The **SamePatternSynapse** connects two binding-neurons
49-
within the same pattern neuron ensemble and is only linked both ends of the synapse have been reached
50-
by the same binding-signal. Therefore, the SamePatternSynapse is used to avoid what
51-
is called the superposition catastrophe.
52-
53-
Since the category-neuron passes on the binding-signal of its input pattern-neuron, it can act as a
54-
category slot, therefore allowing the network great flexibility in abstracting concepts.
55-
56-
Initially, the network starts out empty and is then gradually populated during training. The induction of new neurons
57-
and synapses is guided by a network of template neurons and synapses.
58-
4+
AIKA (**A**rtificial **I**ntelligence for **K**nowledge **A**cquisition)

core/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@
5454
<scope>test</scope>
5555
</dependency>
5656

57+
<dependency>
58+
<groupId>org.mockito</groupId>
59+
<artifactId>mockito-junit-jupiter</artifactId>
60+
<scope>test</scope>
61+
</dependency>
62+
63+
<dependency>
64+
<groupId>org.mockito</groupId>
65+
<artifactId>mockito-core</artifactId>
66+
<scope>test</scope>
67+
</dependency>
68+
5769
<dependency>
5870
<groupId>ch.qos.logback</groupId>
5971
<artifactId>logback-core</artifactId>

core/src/main/java/network/aika/Config.java

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,15 @@
2323
public class Config {
2424
private Double alpha = null; //0.99;
2525

26-
private double annealStepSize = 0.05;
27-
2826
private double learnRate;
2927

30-
private double learnRateForAbstract;
3128
private boolean trainingEnabled;
3229
private boolean countingEnabled;
33-
private boolean metaInstantiationEnabled;
3430

3531
private long neuronProviderRetention = 50;
3632

3733
private Long timeout;
3834

39-
public double getLearnRate(boolean isAbstract) {
40-
return isAbstract ? learnRateForAbstract : learnRate;
41-
}
42-
4335

4436
public double getLearnRate() {
4537
return learnRate;
@@ -49,25 +41,6 @@ public Config setLearnRate(double learnRate) {
4941
this.learnRate = learnRate;
5042
return this;
5143
}
52-
53-
public double getLearnRateForAbstract() {
54-
return learnRateForAbstract;
55-
}
56-
57-
public Config setLearnRateForAbstract(double learnRate) {
58-
this.learnRateForAbstract = learnRateForAbstract;
59-
return this;
60-
}
61-
62-
public double getAnnealStepSize() {
63-
return annealStepSize;
64-
}
65-
66-
public Config setAnnealStepSize(double annealStepSize) {
67-
this.annealStepSize = annealStepSize;
68-
return this;
69-
}
70-
7144
public Double getAlpha() {
7245
return alpha;
7346
}
@@ -95,16 +68,6 @@ public boolean isCountingEnabled() {
9568
return countingEnabled;
9669
}
9770

98-
99-
public boolean isMetaInstantiationEnabled() {
100-
return metaInstantiationEnabled;
101-
}
102-
103-
public Config setMetaInstantiationEnabled(boolean metaInstantiationEnabled) {
104-
this.metaInstantiationEnabled = metaInstantiationEnabled;
105-
return this;
106-
}
107-
10871
public long getNeuronProviderRetention() {
10972
return neuronProviderRetention;
11073
}

0 commit comments

Comments
 (0)