Algorithm Prerequisite
setup:
11.1
Creation of a Soul
New soul created,
assigned id is 20170314151015bdctg.
11.2
Initiating senses
20170314151015bdctg
soul has five senses as following
20170314151015bdctg.Sight
=> Can take
input for Shape (Value: round, rectangular, triangular etc.)
=> Can take
input for Color (Value: red, green, blue etc.)
20170314151015bdctg.Taste
=> Can take
input for Taste (Value: sweet, sour etc.)
20170314151015bdctg.Touch
=> Can take
input for Touch (Value: hard, soft etc.)
20170314151015bdctg.Sound
=> Can take
input for Sound (Value: loud, quiet etc.)
20170314151015bdctg.Smell
=> Can take
input for Smell (Value: sweet, bad, chemical etc.)
Now we have to
setup scale for each value for each senses, for example let us consider about
color; the hexadecimal color value are different for red -> more deep red –
more dark red. Same way our value of unit scale will be different for like
sweet-> more sweet, loud -> more loudly
11.3
Predefined KB development
As discussed
earlier here we set up predefined or natural knowledge or instinct, here we
will define instinct type and value like as following
Define Identity
Identify self
(20170314151015bdctg) or any impression or event by unique vale
……… etc
11.3.1 Define Relations
20170314151015bdctg.PKB.Relation.Direction
=> Can take
input for Direction (Value: right, north, up etc.)
20170314151015bdctg.PKB.Relation.Connection
=> Can take
input for Relation (Value: have, is, of etc.)
20170314151015bdctg.PKB.Relation.Owner
=> Can take
input for Time (Value: parent, child etc.)
……… etc
11.3.2 Define Unit
20170314151015bdctg.PKB.Unit.time
=> Use to process time (Value: min, sec etc.)
20170314151015bdctg.PKB.Unit.length
=> Use to process length(Value: M, CM etc.)
……… etc
11.3.3 Define Rules
20170314151015bdctg.PKB.Rules.Time
=> Can process time (Format: initial_state, applied_factor, affected_factor,
result, exception)
20170314151015bdctg.PKB.Rules.count
=> Can process count(Format: initial_state, applied_factor, affected_factor
result, exception)
……… etc
11.3.4 Define Felling
20170314151015bdctg.PKB.Felling.Hungry
=> Can process Hungry felling (Format: flag, reason, scale)
20170314151015bdctg.PKB.Felling.Happy
=> Can process Happy felling(Format: flag, reason, scale)
……… etc
11.3.5 Initiate Soul value
self _id= 20170314151015bdctg
good_value = 50
good_value_target = ++
happy_value = 50
happy_value_target = ++
bad_value = 50
good_value_target = --
hungry_value = 50
hungry_value_target = --
……… etc
In this section
we initiate the nature of soul, if we consider usual thinking, a human always
find his own good and try to increase his good or positive things and also with
this try to avoid or decrease negative events. For implementing these cases we
have to initiate the soul values.
11.4. Soul
Algorithm: Illustrating
A simple soul has
been created and it will start learning.
To avoid
complexity we will ignore some issues mostly related with predefined KB like
gravity, space etc.
As discussed
earlier as we do not have any smart sensor so when this algorithm learns
something, it will use our eyes or ears or nose. That means when the algorithm
ask input, we will input data according to its format.
Let’s see a case;
in this case we are going to input data about “apple” considering that the
apple is unknown. So according to algorithm
Step 1: For any new impression, the algorithm will ask
the values for each basic senses like for sight sense it is round and color is
green (considering initial stage of apple), it has good smell, it tastes sweet,
it is kinds of soft to touch, it is not generating sound…...etc. If basic
senses matched with any existing impression like suppose the impression
"water" is already exists in the network, then we may have to create
any new branch of the network like "source" or "parent" of
the impression. For example we can get water from river and also from rain too.
Step 2: Here we link the impression “apple” with other
impressions like
apple->grows->
from->trees. Considering that the impression “tree” is already stored on the
database and the definition of “grows”
and “from” are already defined on predefined KB.
Step 3: In this step we will update the impression
network with the new impression “apple”. As we observed apple is growing from
trees so the impression “apple” is the child impression of parent impression
“tree”. So we should create a new branch of existing impression network from
the existing member of the network “tree” and put the new impression “apple”
other side of the branch like following
existing
impression network ->tree->grows->apple
Step 4: We got a new member in the impression network,
now we will register the new impression “apple” in the impression lifecycle. In
the impression lifecycle different natural factor like light, time,
temperature, will be applied unit wise and the result after applied factor will
be updated on the impression networks on associated impressions and associated
branch. For example after certain period of time a green apple becomes red and
sweeter. Whenever we got different result from initial result we will update
the impression network. So we got a result after applying some unit of time and
temperature on the impression “apple”. Now we should update associated
impression and branch. For the discussing example the associated branch should
be update most likely following ways-
existing
impression network ->tree->grows->apple->20 days->red
And more sub
branches will be generated from the impression “apple” like
apple->20
days->bigger
apple->20
days->sweeter
apple->20
days->softer
Now if we get
another impression let suppose “juice”, then we will update the existing branch
of existing network in following way
existing
impression network -> tree->grow->apple->pressure->juice
Here “pressure”
is predefined and after registering the new impression juice in the impression
lifecycle and after applying natural factors on “juice”, more sub branches will
be generated from the impression “juice”.
Step 5: Before starting this step let's take a look at
human learning process. Whenever we experience any new events around us, we
memorize the event category wise. Let's explain; suppose we are observing
orange juice making process for the first time, in this event there are two
parts as following
Info Part: color
of orange juice is “orange” (ignoring others)
Rule part: if
pressure is applied on fruits, it turns into juice. (ignoring others)
So from
impression lifecycle, we extract information and rule for every applied factor
and store these for using into next steps.
Step 6: At this step we will work in the core of the
algorithm, as again let's see another side of human learning process. In every
moment we are experiencing new and repeated events, some events are liked by us
or disliked or some events are useful and some are harmful. We always are accepting
the positive events and want more positive and better for anything. This is our
soul. Our soul likes good, want to be stay good and expect to be better for any
case. Our soul is curious and when its curiosity satisfied it becomes more
curious. These cases like fillings good, bad, like, love, hate, couriers are
treated as soul value in this algorithm. In the impression lifecycle for every
result of applied factor we will update the corresponding soul value. For
example for a ripe apple tasting we will get good filling and will experience
bad filling for rotten apple. So in the impression lifecycle when applied
factor on a green apple is 20 days and result is a ripe apple and it's “taste”
value is good, we will update the soul value of this entry in the positive
direction at the same time we will also increase the target value so that the
algorithm always seeks a better result for any case. Same way we will do
opposite for a rotten apple decrease the target value.
Step 7: This an important step to increase knowledge
using existing knowledge. For example if we know that “ Orange juice is good
for health” then simply we can say “Apple juice is good for health” and it is a
valid knowledge. We can generate this new knowledge because we know that the
orange and apple both are fruits. So for generating knowledge from existing
knowledge, we have to categories the impressions. In this case the impressions
those have similar or close sense values and giving similar output after
applying same factor in the impression lifecycle, these impressions will go
under same group.
Step 8: We already categories all the impressions
according to their nature and reaction against basic factors. Now whenever we
get discover new rule or info with any impression, we will apply the rule to
the all members of the corresponding impression group. For example the
impression “water” is the member of “liquid” group. Simply we know that water
can put out fire. so PRIMARILY we can apply this rule on the all members of
liquid group ( but the rule is not always true for all cases; these exceptions
will be handed on the next step). Now we found that juice is also a member of
liquid group, so according to algorithm can we say - “juice can put out fire”?.
Yes we can and it is a valid rule.
Step 9: As we discussing earlier if we apply any
impression’s rule on the all members of that's group, there will be some errors
for exception. For example petrol or diesel can be primarily registered under
liquid group, but these are not totally appropriate for putting out fires like
other liquids. So for every generated rule there should be “exception” field
which will be updated time to time.
Step 10: Let's go back at the beginning of the article to
the new born baby. When a baby learn something new then he applies his new
learning to another new things he found, for example we observed that a baby
try to eat everything he found around him. He accept it if that thing was
suitable to eat and reject otherwise. Same thing happening with other animals
also. Living being are learning by permutation and combination of their
existing knowledge. Let's explain- consider the following info and rule
info: fruits are
food
rule: something
can be crashed by applying force
in nature we see
that when animals or birds found unknown hard fruit, they crash it and try to
eat and next time when they found same fruit, they will do the same thing. They
have learnt this new knowledge by combining above info and rule.
Let's see another
example. We have the impression “water” in our database and also the rule
“water can put out fire”. And we have also some other impressions like “apple”,
“orange”, “tree”...... etc.
Now add a new
impression “carbon dioxide”
Now combining the
impression and rule
apple can put out
fire- no
orange can put
out fire- no
carbon dioxide
can put out fire- yes
Now come to the
most important point! We are getting new knowledge or info or rule by combining
among the rules, activities and impressions. For every result of the
combinations or any natural events (like rain drops make sound), something
inside us assign a value for that event or knowledge or info. That value is
treating here as soul value. While tasting ripe apple we feel good, so value
for that combination or applied factor on any impression will go upward and for
rotten apple it will go down. At the same time a target value will be set for
each cases higher than current value so that the algorithm always search and
get the more efficiency. Just we have to defined the rules like positive events
or emotion value will have a target of
increasing and vise versa for negative events in predefined KB section.
Step 11: Actually this step should be applicable whenever
we store any impression or rule in the knowledgebase network, For example we
will maintain the branches and sub branches of impression and rule network
wings wise, like “ yes wing” and “no wing”. For the above case rule 1 and 2
will go under “no wing” and rule 3 will go under “yes wing” and also always put
the impressions maintaining parent and child like
tree->grows->apple
water->put
out->fire
this structure
will help to generate valid sentence like if we bind the branches not to go
reverse then we can say
tree grows apple
is valid
and in opposite
direction
apple grows tree
is invalid (ignore exception)
Also
water put out
fire is valid
and in opposite
direction
fire put out
water is invalid (ignore exception)