U.S. patent application number 15/416988 was filed with the patent office on 2017-07-27 for graphical user interface to an artificial intelligence engine utilized to generate one or more trained artificial intelligence models.
The applicant listed for this patent is Bonsai AI, Inc.. Invention is credited to Keen McEwan Browne, Mike Estee, Mark Isaac Hammond, Clara Kliman-Silver.
Application Number | 20170213131 15/416988 |
Document ID | / |
Family ID | 59359528 |
Filed Date | 2017-07-27 |
United States Patent
Application |
20170213131 |
Kind Code |
A1 |
Hammond; Mark Isaac ; et
al. |
July 27, 2017 |
GRAPHICAL USER INTERFACE TO AN ARTIFICIAL INTELLIGENCE ENGINE
UTILIZED TO GENERATE ONE OR MORE TRAINED ARTIFICIAL INTELLIGENCE
MODELS
Abstract
Provided herein in some embodiments is an artificial
intelligence ("AI") engine configured to work with a graphical user
interface ("GUI"). The AI engine can include an architect module,
instructor module, and learner module AI-engine modules. The GUI
can be configured with a text editor and a mental-model editor to
enable an author to define a mental model to be learned by an AI
model, the mental model including an input, one or more concept
nodes, and an output. The architect module can be configured to
propose a neural-network layout from an assembly code compiled from
a source code in a pedagogical programming language, the learner
module can be configured to build the AI model from the
neural-network layout, and the instructor module can be configured
to train the AI model on the one or more concept nodes.
Inventors: |
Hammond; Mark Isaac;
(Berkeley, CA) ; Browne; Keen McEwan; (Berkeley,
CA) ; Estee; Mike; (Oakland, CA) ;
Kliman-Silver; Clara; (Berkeley, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Bonsai AI, Inc. |
Berkeley |
CA |
US |
|
|
Family ID: |
59359528 |
Appl. No.: |
15/416988 |
Filed: |
January 26, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62287861 |
Jan 27, 2016 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06N 3/008 20130101;
G06N 3/04 20130101; G06N 5/04 20130101; H04L 67/42 20130101; G06F
9/4881 20130101; G06F 3/03543 20130101; G06F 30/333 20200101; G06N
3/0454 20130101; G06F 9/451 20180201; G06F 15/80 20130101; G06F
8/38 20130101; G06F 16/951 20190101; G06F 40/166 20200101; G06N
3/105 20130101; G06F 8/31 20130101; G06K 9/6257 20130101; G06N
20/00 20190101; G06F 3/0482 20130101; G06N 3/08 20130101; G06F
16/2228 20190101; G06Q 10/00 20130101; G06F 30/20 20200101 |
International
Class: |
G06N 3/08 20060101
G06N003/08; G06F 3/0482 20060101 G06F003/0482; G06N 3/04 20060101
G06N003/04; G06F 9/44 20060101 G06F009/44; G06F 17/50 20060101
G06F017/50; G06N 3/00 20060101 G06N003/00 |
Claims
1. An artificial intelligence ("AI") engine configured to work with
a graphical user interface ("GUI"), comprising: an application
programming interface ("API") exposed to the GUI, wherein the API
is configured to receive a source code written in a pedagogical
programming language for compiling by the AI engine into an
assembly code, wherein the GUI is configured to enable an author to
define a mental model to be learned by an AI model, the mental
model including an input, one or more concept nodes, and an output,
and wherein the GUI is further configured to enable the author to
define the mental model in a textual mode, a graphical mode, or
both the textual mode and the graphical mode; and one or more
AI-engine modules in the memory including an architect module, an
instructor module, and a learner module, wherein the architect
module, upon execution of the architect module by the one or more
processors, is configured to propose a neural-network layout with
one or more neural-network layers from the assembly code, wherein
the learner module, upon execution of the learner module by the one
or more processors, is configured to build the AI model with the
one or more neural-network layers from the neural-network layout
proposed by the architect module, wherein the instructor module,
upon execution of the instructor module by the one or more
processors, is configured to train the AI model built by the
learner module on the one or more concept nodes, and wherein the
GUI is configured via interoperability of the textual mode and the
graphical mode to facilitate development of the mental model,
thereby optimizing the development of the mental model to reduce
AI-model training time, memory, and computing cycles used by the AI
engine for training the AI model on the mental model.
2. The AI engine of claim 1, further comprising a compiler in a
memory, wherein the compiler, upon execution of the compiler by one
or more processors, is configured to generate the assembly code
from the source code received the API exposed to the GUI, wherein
the GUI is an integrated development environment ("IDE") including
a text editor configured to enable the author to define the mental
model by typing in the textual mode, and a mental-model designer
configured to enable the author to define the mental model by mouse
gestures in the graphical mode, wherein author-based modification
of the mental model by the typing in the textual mode automatically
modifies the mental model in the mental-model designer, and wherein
author-based modification of the mental model by the mouse gestures
in the graphical mode automatically modifies the mental-model in
the text editor.
3. The AI engine of claim 2, wherein the text editor is further
configured to enable the author to set one or more breakpoints in
the source code written in the pedagogical programming language,
and wherein the mental-model designer is further configured to
automatically highlight the one or more concept nodes of the mental
model corresponding to the one or more breakpoints if the one or
more breakpoints are set at the one or more concept nodes.
4. The AI engine of claim 2, wherein the pedagogical programming
language is configured to enable an author to define schemas
describing one or more data types to be streamed through connected
nodes of the mental model including the input, the one or more
concept nodes, one or more stream nodes, and the output, and
wherein the data types include primitive data types selected from
strings, integers, floats, and Booleans; structured data types;
constrained data types with range expressions limiting the data of
the constrained data types; and combinations thereof.
5. The AI engine of claim 4, wherein each connector of a number of
connectors between the connected nodes of the mental model includes
a data type, and wherein the mental-model designer is further
configured to color code the number of connectors in the mental
model to indicate whether the data type between the connected nodes
of the mental model is correct or not for each connector.
6. The AI engine of claim 2, wherein the IDE is configured to
support one or more plug-ins for extended functionality of the IDE,
and wherein the extended functionality of the IDE includes support
for programming languages in addition to the pedagogical
programming language; source code management; project management; a
marketplace; finding software bugs; checking programming style; and
themes within the IDE.
7. The AI engine of claim 2, wherein the IDE is configured as a
window with a menu bar, a short cut bar, or both a menu bar and a
short cut bar configured to provide access to the text editor, the
mental-model designer, training data from a training-data source,
analytical tools for analyzing aspects of training the AI model,
and tools for deploying a trained AI model.
8. The AI engine of claim 2, wherein the text editor is further
configured to enable the author to define one or more curriculums
for training the AI model respectively on the one or more concept
nodes.
9. The AI engine of claim 8, wherein the architect module is
further configured to map the one or more concept nodes of the
mental model on the one or more neural-network layers of the AI
model, and wherein the instructor module is further configured to
find a starting point among the one or more concept nodes and the
corresponding one or more curriculums for training the AI
model.
10. The AI engine of claim 9, wherein the instructor module is
further configured to train the AI model in one or more training
cycles with training data from one or more training-data sources
selected from a simulator, a training-data generator, a
training-data database, or a combination thereof based on training
parameters in the pedagogical programming language, and wherein the
instructor module is further configured to terminate neural-network
training upon an instructor module-determined terminating
condition.
11. An artificial intelligence ("AI") system including an AI engine
configured to work with an integrated development environment
("IDE"), comprising: a) one or more remote servers including i) a
compiler in a server memory, wherein the compiler, upon execution
of the compiler by one or more server processors, is configured to
generate an assembly code from a source code written in a
pedagogical programming language, and wherein the compiler is
further configured to receive the source code through an
application programming interface ("API") exposed to the IDE; and
ii) one or more AI-engine modules in the server memory including an
architect module, an instructor module, and a learner module,
wherein the architect module, upon execution of the architect
module by the one or more server processors, is configured to
propose a neural-network layout with one or more neural-network
layers from the assembly code, wherein the learner module, upon
execution of the learner module by the one or more server
processors, is configured to build an AI model with the one or more
neural-network layers from the neural-network layout proposed by
the architect module, and wherein the instructor module, upon
execution of the instructor module by the one or more server
processors, is configured to train the AI model built by the
learner module on the one or more concept nodes respectively with
one or more curriculums; and b) one or more local clients including
i) the IDE in a client memory, wherein the IDE, upon execution of
the IDE by one or more client processors, is configured to enable
an author to generate the source code written in the pedagogical
programming language, wherein the IDE is further configured to
enable the author to define a mental model to be learned by the AI
model, the mental model including an input, one or more concept
nodes, and an output, wherein the IDE is further configured to
enable the author to define the one or more curriculums for
training the AI model respectively on the one or more concept
nodes, wherein the ID is further configured to enable the author to
define the mental model in both a textual mode in an text editor
and a graphical mode in a mental-model designer, and wherein the
IDE is further configured to send the source code through the API
exposed to the IDE.
12. A non-transitory machine-readable medium configured to store
data and instructions, which, when executed by one or more
processors on a computing device, causes the following operations,
comprising: receiving a source code through an application
programming interface ("API") exposed to a graphical user interface
("GUI"), wherein the GUI is configured to enable an author to
define a mental model with a pedagogical programming language, the
mental model including an input, one or more concept nodes, and an
output, and wherein the GUI is further configured to enable the
author to define the mental model in a textual mode, a graphical
mode, or both the textual mode and the graphical mode; generating
an assembly code from the source code with a compiler of an
artificial intelligence ("AI") engine configured to work with the
GUI; proposing a neural-network layout including one or more
neural-network layers from the assembly code with an architect
AI-engine module of the AI engine; building an AI model including
the one or more neural-network layers from the neural-network
layout with a learner AI-engine module of the AI engine; and
training the AI model on the mental model with an instructor
AI-engine module of the AI engine.
13. The non-transitory machine-readable medium of claim 12, wherein
the GUI is an integrated development environment ("IDE") including
a text editor configured to enable the author to define the mental
model including one or more curriculums for training the AI model
respectively on the one or more concept nodes by typing in the
textual mode, and a mental-model designer configured to enable the
author to define the mental model by mouse gestures in the
graphical mode, wherein author-based modification of the mental
model by the typing in the textual mode automatically modifies the
mental model in the mental-model designer, and wherein author-based
modification of the mental model by the mouse gestures in the
graphical mode automatically modifies the mental-model in the text
editor.
14. The non-transitory machine-readable medium of claim 13, wherein
the text editor is further configured to enable the author to set
one or more breakpoints in the source code written in the
pedagogical programming language, and wherein the mental-model
designer is further configured to automatically highlight the one
or more concept nodes of the mental model corresponding to the one
or more breakpoints if the one or more breakpoints are set at the
one or more concept nodes.
15. The non-transitory machine-readable medium of claim 13, wherein
the pedagogical programming language is configured to enable an
author to define schemas describing one or more data types to be
streamed through connected nodes of the mental model including the
input, the one or more concept nodes, one or more stream nodes, and
the output, and wherein the data types include primitive data types
selected from strings, integers, floats, and Booleans; structured
data types; constrained data types with range expressions limiting
the data of the constrained data types; and combinations
thereof.
16. The non-transitory machine-readable medium of claim 15, wherein
each connector of a number of connectors between the connected
nodes of the mental model includes a data type, and wherein the
mental-model designer is further configured to color code the
number of connectors in the mental model to indicate whether the
data type between the connected nodes of the mental model is
correct or not for each connector.
17. The non-transitory machine-readable medium of claim 13, wherein
the IDE is configured to support one or more plug-ins for extended
functionality of the IDE, and wherein the extended functionality of
the IDE includes support for programming languages in addition to
the pedagogical programming language; source code management;
project management; a marketplace; finding software bugs; checking
programming style; and themes within the IDE.
18. The non-transitory machine-readable medium of claim 13, wherein
the IDE is configured as a window with a menu bar, a short cut bar,
or both a menu bar and a short cut bar configured to provide access
to the text editor, the mental-model designer, training data from a
training-data source, analytical tools for analyzing aspects of
training the AI model, and tools for deploying a trained AI
model.
19. The non-transitory machine-readable medium of claim 13, further
comprising mapping with the architect module the one or more
concept nodes of the mental model on the one or more neural-network
layers of the AI model; and finding with the instructor module a
starting point among the one or more concept nodes and the one or
more curriculums for training the AI model.
20. The non-transitory machine-readable medium of claim 19, further
comprising training the AI model with the instructor module in one
or more training cycles with training data from one or more
training-data sources selected from a simulator, a training-data
generator, a training-data database, or a combination thereof based
on training parameters in the pedagogical programming language, and
terminating the training of the AI model upon an instructor
module-determined terminating condition.
Description
CROSS-REFERENCE
[0001] This application claims priority to U.S. Provisional Patent
Application No. US 62/287,861, filed Jan. 27, 2016, titled "BONSAI
PLATFORM, LANGUAGE, AND TOOLING," the disclosure of which is hereby
incorporated herein by reference in its entirety.
NOTICE OF COPYRIGHT
[0002] A portion of this disclosure contains material that is
subject to copyright protection. The copyright owner has no
objection to the facsimile reproduction by anyone of the material
subject to copyright protection as it appears in the United States
Patent & Trademark Office's patent file or records, but
otherwise reserves all copyright rights whatsoever.
FIELD
[0003] Embodiments of the design provided herein generally relate
to artificial intelligence systems and methods thereof.
BACKGROUND
[0004] Artificial intelligence ("AI") has potential to be one of
the most impactful technologies of the 21.sup.st century and
beyond. Unfortunately, software developers currently looking to
work with AI must learn complex toolkits, use limited application
programming interfaces ("APIs"), use constrained black-box
solutions for AI, or some combination thereof. The foregoing
limitations must be overcome for software developers and
enterprises to solve real-world problems with AI. In addition, with
fewer than 20,000 data science experts capable of building AI at
its lowest levels, working with AI needs to be made more accessible
to the 20 million or more software developers of the software
development community. Provided herein are AI systems and methods
that address the foregoing.
SUMMARY
[0005] Provided herein in some embodiments is an AI engine
configured to work with a graphical user interface ("GUI"). The AI
engine can include one or more AI-engine modules including an
architect module, an instructor module, and a learner module. A
source code written in a pedagogical programming language can be
received through an API exposed to the GUI and an assembly code can
be subsequently generated from the source code. The GUI can be
configured to enable an author to define a mental model to be
learned by an AI model, the mental model including an input, one or
more concept nodes, one or more optional stream nodes, and an
output. The GUI can be further configured to enable the author to
define the mental model in a textual mode, a graphical mode, or
both the textual mode and the graphical mode. The architect module
can be configured to propose a neural-network layout with one or
more neural-network layers from the assembly code. The learner
module can be configured to build the AI model with the one or more
neural-network layers from the neural-network layout proposed by
the architect module. The instructor module can be configured to
train the AI model built by the learner module on the one or more
concept nodes.
[0006] Also provided herein in some embodiments is an AI system
including an AI engine configured to work with an integrated
development environment ("IDE"). The AI system can include one or
more remote servers and one or more local clients. The one or more
remote servers can include a compiler and one or more AI-engine
modules including an architect module, an instructor module, and a
learner module. The compiler can be configured to receive a source
code written in a pedagogical programming language through an API
exposed to the IDE and generate an assembly code from the source
code. The architect module can be configured to propose a
neural-network layout with one or more neural-network layers from
the assembly code. The learner module can be configured to build
the AI model with the one or more neural-network layers from the
neural-network layout proposed by the architect module. The
instructor module can be configured to train the AI model built by
the learner module on the one or more concept nodes. The one or
more local clients can include the IDE. The IDE can be configured
to enable an author to generate the source code written in the
pedagogical programming language. The IDE can be further configured
to enable the author to define a mental model to be learned by the
AI model, the mental model including an input, one or more concept
nodes, one or more optional stream nodes, and an output. The IDE
can be further configured to enable the author to define the one or
more curriculums for training the AI model respectively on the one
or more concept nodes. The IDE can be further configured to enable
the author to define the mental model in both a textual mode in an
text editor and a graphical mode in a mental-model designer. The
IDE can be further configured to send the source code through the
API exposed to the IDE.
[0007] Also provided herein in some embodiments is a method of an
AI engine including receiving a source code, generating an assembly
code, proposing a neural-network layout, building an AI model, and
training the AI model. Receiving the source code can include
receiving the source code through an API exposed to a GUI. The GUI
can be configured to enable an author to define a mental model with
a pedagogical programming language, the mental model including an
input, one or more concept nodes, one or more optional stream
nodes, and an output. The GUI can be further configured to enable
the author to define the mental model in a textual mode, a
graphical mode, or both the textual mode and the graphical mode.
Generating the assembly code can include generating the assembly
code from the source code with a compiler of the AI engine
configured to work with the GUI. Proposing a neural-network layout
can include proposing the neural-network layout including one or
more neural-network layers from the assembly code with an architect
AI-engine module of the AI engine. Building the AI model can
include building the AI model including the one or more
neural-network layers from the neural-network layout with a learner
AI-engine module of the AI engine. Training the AI model can
include training the AI model on the mental model with an
instructor AI-engine module of the AI engine.
[0008] These and other features of the design provided herein can
be better understood with reference to the drawings, description,
and claims, all of which form the disclosure of this patent
application.
DRAWINGS
[0009] The drawings refer to some embodiments of the design
provided herein in which:
[0010] FIG. 1A provides a schematic illustrating a simple
artificial neural network.
[0011] FIG. 1B provides a schematic illustrating building,
training, and deploying a trained AI model in accordance with some
embodiments.
[0012] FIG. 2A provides a schematic illustrating an AI system in
accordance with some embodiments.
[0013] FIG. 2B provides a schematic illustrating a method
associated with an AI system in accordance with some
embodiments.
[0014] FIG. 3A provides a schematic illustrating an AI system in
accordance with some embodiments.
[0015] FIG. 3B provides a schematic illustrating a method
associated with an AI system in accordance with some
embodiments.
[0016] FIG. 4A provides an image of a graphical user interface
("GUI") including a textual editor in accordance with some
embodiments.
[0017] FIG. 4B provides an image of a GUI including a textual
editor in accordance with some embodiments.
[0018] FIG. 4C provides an image of a GUI including a graphical
editor in accordance with some embodiments.
[0019] FIG. 4D provides an image of a GUI including a graphical
editor in accordance with some embodiments.
[0020] FIG. 4E provides an image of a GUI including a graphical
display of a mental model and a corresponding neural network's
performance in learning the mental model in accordance with some
embodiments.
[0021] FIG. 4F provides an image of a GUI including a training-data
source and training data in accordance with some embodiments.
[0022] FIG. 4G provides an image of a GUI including a deploy action
in accordance with some embodiments.
[0023] FIG. 4H provides an image of a GUI including a number of
neural networks and performance comparisons of the neural networks
in accordance with some embodiments.
[0024] FIG. 5A provides a schematic illustrating a mental model
including a concept in accordance with some embodiments.
[0025] FIG. 5B provides a schematic illustrating a mental model
including a number of concepts in accordance with some
embodiments.
[0026] FIG. 6 provides a schematic illustrating an AI system in
accordance with some embodiments.
[0027] FIG. 7A provides a schematic illustrating an AI system in
accordance with some embodiments.
[0028] FIG. 7B provides a schematic illustrating an AI system in
accordance with some embodiments.
[0029] FIG. 8 provides one or more networks in accordance with some
embodiments.
[0030] FIG. 9 provides one or more computing systems in accordance
with some embodiments.
[0031] While the design is subject to various modifications,
equivalents, and alternative forms, specific embodiments thereof
have been shown by way of example in the drawings and will now be
described in detail. It should be understood that the design is not
limited to the particular embodiments disclosed, but--on the
contrary--the intention is to cover all modifications, equivalents,
and alternative forms using the specific embodiments.
DESCRIPTION
[0032] In the following description, numerous specific details are
set forth, such as examples of specific data signals, named
components, memory in a device, etc., in order to provide a
thorough understanding of the present design. It will be apparent,
however, to one of ordinary skill in the art that the present
design can be practiced without these specific details. In other
instances, well known components or methods have not been described
in detail but rather in a block diagram in order to avoid
unnecessarily obscuring the present design. Further, specific
numeric references such as first driver, can be made. However, the
specific numeric reference should not be interpreted as a literal
sequential order but rather interpreted that the first notification
is different than a second notification. Thus, the specific details
set forth are merely exemplary. The specific details can be varied
from and still be contemplated to be within the spirit and scope of
the present design. The term coupled is defined as meaning
connected either directly to the component or indirectly to the
component through another component.
[0033] An "AI model" as used herein includes, but is not limited
to, neural networks such as recurrent neural networks, recursive
neural networks, feed-forward neural networks, convolutional neural
networks, deep belief networks, and convolutional deep belief
networks; multi-layer perceptrons; self-organizing maps; deep
Boltzmann machines; and stacked de-noising auto-encoders.
[0034] An "artificial neural network" or simply a "neural network"
as used herein can include a highly interconnected network of
processing elements, each optionally associated with a local
memory. FIG. 1A provides a schematic illustrating a simple
artificial neural network 101. The processing elements can be
referred to herein as "artificial neural units," "artificial
neurons," "neural units," "neurons," "nodes," and the like, while
connections between the processing elements can be referred to
herein as "synapses," "weights," and the like. A neuron can receive
data from an input or one or more other neurons respectively
through one or more weighted synapses, process the data, and send
processed data to an output or yet one or more other neurons
respectively through one or more other weighted synapses. The
neural network or one or more neurons thereof can be generated in
either hardware, software, or a combination of hardware and
software, and the neural network can be subsequently trained.
[0035] As used herein, "remote" and "local" such as in a "remote
server" and a "local client" are intended to convey, for example,
the remote server and local client are telecommunicatively coupled,
sometimes over very large geographic distances. As used herein
"online" is intended to convey two systems such as the remote
server and the local client are telecommunicatively coupled and
available for immediate communications between the two systems. As
used herein "offline" is intended to convey two systems such as the
remote server and the local client are telecommunicatively coupled
but at least one of the two systems is not available for immediate
communications between the two systems. For example, at least one
of the remote server and the local client can be switched off and,
therefore, "offline." Alternatively, "offline" can indicate two
systems such as the remote server and the local client are not
telecommunicatively coupled, for example, due to a broken
telecommunications connection.
[0036] Unless defined otherwise, all technical and scientific terms
used herein have the same meaning as commonly understood by persons
of ordinary skill in the art.
[0037] AI has potential to be one of the most impactful
technologies of the 21.sup.st century and beyond. Unfortunately,
software developers currently looking to work with AI must learn
complex toolkits, use limited APIs, use constrained black-box
solutions for AI, or some combination thereof. The foregoing
limitations must be overcome for software developers and
enterprises to solve real-world problems with AI. In addition, with
fewer than 20,000 data science experts capable of building AI at
its lowest levels, working with AI needs to be made more accessible
to the 20 million or more software developers of the software
development community. Provided herein are AI systems and methods
that address the foregoing.
[0038] For example, provided herein in some embodiments is an AI
engine configured to work with a graphical user interface ("GUI").
The AI engine can include one or more AI-engine modules including
an architect module, an instructor module, and a learner module. A
source code written in a pedagogical programming language can be
received through an API exposed to the GUI and an assembly code can
be subsequently generated from the source code. The GUI can be
configured to enable an author to define a mental model to be
learned by an AI model, the mental model including an input, one or
more concept nodes, one or more optional stream nodes, and an
output. The GUI can be further configured to enable the author to
define the mental model in a textual mode, a graphical mode, or
both the textual mode and the graphical mode. The architect module
can be configured to propose a neural-network layout with one or
more neural-network layers from the assembly code. The learner
module can be configured to build the AI model with the one or more
neural-network layers from the neural-network layout proposed by
the architect module. The instructor module can be configured to
train the AI model built by the learner module on the one or more
concept nodes.
[0039] FIG. 1B provides a schematic illustrating building,
training, and deploying a trained AI model in accordance with some
embodiments.
[0040] As shown, AI systems and methods provided herein enable
users such as software developers to design an AI model, build the
AI model, train the AI model to provide a trained AI model, and
deploy the trained AI model as a deployed AI model in any of a
number of desired ways. For example, AI systems and methods
provided herein enable users such as software developers to design
a neural network layout or neural network topology 102, build a
neural network 104, train the neural network 104 to provide a
trained neural network 106, and deploy the trained neural network
106 as a deployed neural network 108 in any of a number of desired
ways. For example, the trained AI model or the trained neural
network 106 can be deployed in or used with a software application
or a hardware-based system.
[0041] FIG. 2A provides a schematic illustrating an AI system 200
in accordance with some embodiments.
[0042] As shown, the AI system 200 includes one or more client
systems 210 and one or more server systems 220, wherein each server
system or any two or more servers systems of the one or more server
systems 220 can be referred to herein as an AI engine. The one or
more client systems 210 can be client systems and include a coder
212 or coding means for generating programming code in a
pedagogical programming language such as Inkling.TM.. The coder 212
can include a GUI such as an IDE configured for generating the
programming code. The one or more client systems 210 can further
include a training data source 214. While not shown in FIG. 2A, the
training data source 214 can alternatively be included in the one
or more server systems 220, or the training data source 214 can be
include in both the one or more client systems 210 and the one or
more server systems 220. The one or more server systems 220 can be
server systems and include a compiler 222 for the code and an AI
generator 223 for generating the trained neural network 106 via one
or more training cycles in the AI generator 223.
[0043] FIG. 2B provides a schematic illustrating a method 201
associated with an AI system in accordance with some
embodiments.
[0044] As shown in view of FIG. 2A, a client such as a client of
the one or more clients 210 can send code from the coder 212 (e.g.,
a GUI such as an IDE configured for generating code) or an
intermediate agent to the compiler 222 on a server such as a server
of the one or more server systems 220 for compiling the code into
an optimized assembly code for the AI generator 223. The compiler
222 can send the compiled code or assembly code to the AI generator
223, which proposes and builds a neural network such as the neural
network 104 for training as determined by features of the code. The
AI generator can request training data from the training data
source 214, and the training data source 214 can send the training
data to the AI generator 223 upon the request. The AI generator 223
can subsequently train the neural network 104 on the training data
in one or more training cycles to provide a trained state of the
neural network or the trained neural network 106. The AI generator
223 can elicit a prediction from the trained neural network 106 and
send the prediction to the training data source 214 for updated
training data based upon the prediction and, optionally, additional
training cycles. When the one or more training cycles are complete,
the AI generator 223 can save the trained state of the neural
network as the trained neural network 106.
[0045] FIG. 3A provides a schematic illustrating an AI system in
accordance with some embodiments.
[0046] Following on the AI system 200 of FIG. 2A, the AI generator
223 for generating the trained neural network 106 can include one
or more AI-generator modules selected from at least an instructor
module 324, an architect module 326, and a learner module 328 as
shown. The instructor module 324, the architect module 326, and the
learner module 328 can respectively be referred to herein as the
Instructor, the Architect, and the Learner. The instructor module
324 can optionally include hyperlearner module 325, which can be
referred to herein as the Hyperlearner, and which can be configured
to select one or more hyperparameters for any one or more of a
neural network configuration, a learning algorithm, a learning
optimizer, and the like. Before selecting the one or more
hyperparameters, the hyperlearner module 325 can access a database
of solution statistics gathered from one or more repositories of
previous problems and previously built AI models therefor and take
a fingerprint of a sample of available data by using random
predictions. The hyperlearner module 325 can optionally be
contained in a different AI-generator module such as the architect
module 326 or the learner module 328, or the hyperlearner module
325 can be an AI-generator module itself. The learner module 328
can optionally include a predictor module 329, which can be
referred to herein as the Predictor, and which can provide one or
more predictions for a trained neural network such as the trained
neural network 106 hosted in a prediction mode. The predictor
module 329 can optionally be contained in a different AI-generator
module such as the instructor module 324 or the architect module
326, or the predictor module 329 can be an AI-generator module
itself. The AI generator 223 including the foregoing one or more
AI-generator modules can be configured to generate the trained
neural network 106 from compiled code via one or more training
cycles in the AI generator 223.
[0047] FIG. 3B provides a schematic illustrating a method
associated with an AI system in accordance with some
embodiments.
[0048] As shown in view of FIG. 3A, a client such as a client of
the one or more clients 210 can send code from the coder 212 (e.g.,
a GUI such as an IDE configured for generating code) or an
intermediate agent to the compiler 222 on a server such as server
of the one or more server systems 220 for compiling the code into
an optimized assembly code. The compiler 222 can send the compiled
code or assembly code to the instructor module 324, which, in turn,
can send the code to the architect module 326. The architect module
326 can propose a neural network layout such as the neural network
layout 102--as well as optimize the neural network layout 102--for
building and training as determined by features of the code, and
the architect module 326 can send the neural network layout 102 to
the instructor module 324. In addition, the architect module 326
can map between one or more concepts or concept nodes of a mental
model expressed in a pedagogical programming language and one or
more layers of the neural network layout 102 and subsequently send
one or more maps to the learner module 328. The learner module 328
can build a neural network such as the neural network 104 from the
neural network layout 102 specified by the architect module 326.
The instructor module 324 can find a starting point among the one
or more concept nodes in the mental model and one or more
curriculums expressed in the pedagogical programming language for
training the neural network 104. The instructor module 324 can also
request training data from the training data source 214 or any
additional training data sources, and the training data source 214
(or sources) can send the training data to the instructor module
324 upon the request. The instructor module 324 can subsequently
instruct the learner module 328 on training the neural network 104
(e.g., which lessons should be taught in which order) with the one
or more curriculums for training the one or more concepts in the
mental mode using the training data and one or more hyperparameters
from the hyperlearner module 325. Training the neural network 104
can take place in one or more training cycles with the training
data to yield a trained state of the neural network or the trained
neural network 106. The instructor module 324 can decide what
concepts and streams should be actively trained in a mental model,
as well as terminating conditions for training the concepts. The
learner module 328 or the predictor module 329 can elicit a
prediction from the trained neural network 106 and send the
prediction to the instructor module 324. The instructor module 324,
in turn, can send the prediction to the training data source 214
for updated training data based upon the prediction and,
optionally, instruct the learner module 328 in additional training
cycles. When the one or more training cycles are complete, the
learner module 328 can save the trained state of the neural network
as the trained neural network 106.
Graphical User Interface
[0049] As provided herein, the coder 212 or coding means of FIGS.
2A and 3A can include a GUI such as an IDE configured for
generating a source code in a pedagogical programming language and
sending the source code through an exposed API to the compiler 222
for compiling into an assembly code. FIGS. 4A-4H provide images of
such an IDE in accordance with some embodiments, wherein FIGS. 4A
and 4B provide images of the IDE including a text editor for
generating the source code for a mental model, FIGS. 4C and 4D
provide images of the IDE including a graphical editor for
graphically editing a mental model, FIG. 4E provides an image of
the IDE including a mental model and a corresponding neural
network's performance in learning the mental model, FIG. 4F
provides an image of the IDE including a training-data source and
training data, and FIG. 4G provides an image of the IDE including a
deploy action through a deployment configurator. FIG. 4H provides
an image of the IDE including a number of neural networks and
performance comparisons of the neural networks in accordance with
some embodiments.
[0050] As shown in FIGS. 4A-4H, the IDE can be configured as a
window 400 with a menu bar 402, a short cut bar 404, a status bar
406, or some combination thereof. The menu bar 402 can be
configured to provide IDE-specific, drop-down menus for creating
and interacting with AI models, as well more common drop-down menus
for opening files, displaying help documentation or manuals, and
the like. The short cut bar 404 can be configured to provide short
cuts or buttons such as short cuts for creating and interacting
with AI models. For example, as shown, the short cut bar 404 can
include an "Edit" short cut for accessing a text editor 410 for
creating or modifying a source code in a pedagogical programming
language defining a mental model; a "Design" short cut for
accessing mental-model designer 412 for creating or modifying a
mental model; a "Data" short cut for accessing a training-data
viewer 414 for viewing training data for a neural network to learn
in accordance with a mental model; a "Deploy" short cut for
accessing a deployment configurator 416 for configuring and
deploying a trained AI model or a trained neural network; and a
"Help" short cut for accessing help documentation or manuals. The
status bar 406 can be configured to provide a search box for
searching in the IDE and networked systems, and the status bar 406
can include a number of additional short cuts for accessing
status-related items such as training status of an AI model through
a short cut for "Training Log" or deployment status of an AI model
through a short cut for "Deployment Status."
[0051] As further shown in FIGS. 4A-4H, the window 400 of the IDE
can include one or more panes or views such as a project pane 418,
a mental-model designer pane 420, or training pane 422. The project
pane 418 can include access to project files such as a file written
in a pedagogical programming language including a mental model
(e.g., "mnist.mm.ink"), one or more curriculums (e.g.,
"training.pg.ink") for respectively training one or more concept
nodes of a mental model, or a simulator file (e.g.,
"curve_simulator.py" and "segments_simulator.py," both written in
Python) for a simulator. The mental-model designer pane 420 can
include mental model-building elements such as concept nodes,
stream nodes, and blocks that can be dragged from the mental-model
designer pane 420, dropped into the mental-model designer 412, and
arranged with data-type connectors in the mental-model designer
412. The training pane 422 can include a graphical representation
of a trained AI model's performance in the trained AI model's
currently trained state as well as a means to investigate
predictions of the trained AI against training or testing data in
the AI model's currently trained state.
[0052] The IDE is therefore configured to enable an author to
define a mental model to be learned by a neural network. The mental
model including an input, one or more concept nodes, one or more
optional stream nodes, and an output, can be defined in a textual
mode in the text editor, a graphical mode in the mental-model
designer, or both the textual mode and the graphical mode. The text
editor can be the preferred editor for defining the one or more
curriculums for training the neural network respectively on the one
or more concept nodes. The text editor can be configured to enable
the author to define the mental model by typing in the textual
mode, while the mental-model designer can be configured to enable
the author to define the mental model by mouse gestures and the
like in the graphical mode. Notably, the IDE is configured such
that author-based modifications of the mental model made by the
typing in the textual mode are automatically replicated in the
mental model as represented in the mental-model designer. Likewise,
author-based modifications of the mental model by the mouse
gestures in the graphical mode are automatically replicated in the
mental-model as represented in the text editor. Furthermore, the
text editor is configured to enable the author to set one or more
breakpoints in the source code written in the pedagogical
programming language. When the author sets the one or more
breakpoints, the mental-model designer is configured to
automatically highlight the one or more concept nodes of the mental
model corresponding to the one or more breakpoints if the one or
more breakpoints are set at the one or more concept nodes.
[0053] The IDE is therefore also configured to enable an author to
access training data from a training-data source such as through
the "Data" short cut; analytical tools for analyzing aspects of
training a neural network such as a graphical representation of a
trained neural network's performance through the training pane 422;
and tools for configuring and deploying a trained neural network
through the "Deploy" short cut or the deployment configurator 416.
The training pane 422, the mental-model designer 412, or the
combination of the training pane 422 and the mental-model designer
112 can be further configured for analyzing aspects of training a
neural network such as one or more concept nodes of a neural
network currently being trained and estimated training time for a
concept node of the neural network, a set of concept nodes of the
neural network, or all the concept nodes of the neural network.
[0054] The IDE can also be configured to support one or more
plug-ins for extended functionality of the IDE, wherein the
extended functionality of the IDE can include support for
programming languages in addition to the pedagogical programming
language (e.g., Python); source code management; project
management; a marketplace; suggesting one or more concepts of a
mental model; suggesting one or more mental models; checking
programming syntax; checking programming style; editing assembly
code (e.g., TensorFlow); finding software bugs; and themes within
the IDE. However, such extended functionality can alternatively or
additionally be built into the IDE itself without the one or more
plug-ins.
Pedagogical Programming
[0055] Pedagogical programming focuses on codifying one or more of
the following: 1) What are the concepts associated with a problem
domain? 2) How do the concepts relate to each other? 3) How does
one go about teaching the concepts?
[0056] The pedagogical programming language Inkling.TM. is a
special purpose programming language designed to effect a trained
AI model using higher-level mental models and concepts to be
learned instead of lower-level mechanics for building and teaching
(or training) neural networks. Inkling.TM. is a declarative,
strongly typed pedagogical programming language configured to
generalize from vast, dynamic AI algorithms that generally require
high levels of expertise in machine learning. Source code authored
with Inkling.TM. or the Inkling.TM. file can contain the
higher-level mental models and concepts to be taught to and,
thereby, learned by an AI model. The Inkling.TM. file can also
contain curricula and lessons thereof to teach the concepts to be
learned by the AI model.
Mental Models and Concepts
[0057] FIGS. 5A and 5B provide schematics respectively illustrating
mental models 500A and 500B and concepts thereof in accordance with
some embodiments.
[0058] Beginning with concepts, a concept in Inkling.TM. can be a
software object and/or define something that an AI model or a
neural network can be trained on and learn. Once learned, the AI
model can provide intelligent output. Every Inkling.TM. file or
program needs at least one concept.
[0059] A concept can fall into one of at least two groups: fact and
strategy. A fact-type concept can describe a state of one or more
things such as an object, a ball, a character, an enemy, a light, a
person, or the like. The state can be whether the one or more
things are on or off, hot or cold, a number or a letter, or the
like. The fact-type concept can also describe a location. A
strategy-type concept can reflect a method or a behavior such as
"avoid_ghosts," "keep_the_paddle_under_the_ball,"
"don't_run_into_walls," "turn_lights_off," "get_high_score," or the
like. Both FIGS. 5A and 5B show mental models including the
strategy-type concept "get high score."
[0060] Turning to mental models, a mental model in Inkling.TM. is
also something that an AI model can be trained on and learn. A
mental model can include an input, one or more concepts or concept
nodes, one or more data transformation streams or stream nodes, and
an output, all of which can be structured (e.g., hierarchically,
cyclically, etc.) in terms of the one or more concepts and the one
or more data transformation streams or stream nodes. A mental model
models a problem domain through codification of underlying concepts
and their relationships to one another, often starting from
relatively simple concepts and building in more complex concepts as
needed.
[0061] As shown in FIG. 5A, a relatively simple, single-concept
mental model can include, for example, a strategy-type concept such
as "get_high_score." The single-concept mental model and the
concept thereof can be expressed in Inkling.TM. as in the following
Inkling.TM. code block, wherein the concept is "get_high_score," a
prediction type for the concept is "classifier," the concept
follows input of the game state to the neural network, and the
concept feeds output from the neural network:
TABLE-US-00001 concept get_high_score : (PlayerMove) is classifier
follows input(GameState) feeds output end
"PlayerMove" and "GameState" represent schema references, which, in
turn, describe one or more data types. Schemas are described in
further detail herein.
[0062] As shown in FIG. 5B, a more complex, multi-concept mental
model can include a hierarchical structure including, for example,
strategy-type concepts such as "keep_paddle_under_ball,"
"get_high_score," and state-type concepts such as "ball_location."
The multi-concept mental model and the concepts thereof can be
expressed in Inkling.TM. as in the following code block, wherein
the concepts are "ball_location," "keep_paddle_under_ball," and
"get_high_score."
TABLE-US-00002 concept ball_location : (Int32 x, Int32 y) is
estimator follows input(GameState) end concept
keep_paddle_under_ball : (PlayerMove) is classifier follows
ball_location, input(GameState) end concept get_high_score :
(PlayerMove) is classifier follows keep_paddle_under_ball,
input(GameState) feeds output end
Prediction types for the concepts are "estimator" and "classifier,"
wherein an estimator is configured to estimate a value from its
input, and wherein a classifier is configured to classify from its
input. Other prediction types for the concepts can also include,
but are not limited to, "predictor" and "goal."
[0063] As further shown in FIG. 5B, a concept in a multi-concept
mental model can receive input from other concepts in the mental
model, send output to other concepts in the mental model, provide a
final output or result output, or a combination thereof. This can
be expressed in Inkling.TM. as in the foregoing code block. For
example, the concept "keep_paddle_under_ball" follows the concept
"ball_location" and input of the game state to the neural network,
and the concept "get_high_score" follows the concept
"keep_paddle_under_ball" and the input of the game state to the
neural network. In addition, the concept "get_high_score" feeds
output from the neural network. Graphically, the foregoing code
block yields the hierarchical, multi-concept mental model of FIG.
5B. Addition of more concepts to a mental model can decrease
training time for an AI model, as well as enable a trained AI model
to give smarter, more accurate predictions from training or testing
data fed to the mental model.
[0064] The input of a mental model can be data representative of
the problem domain such as images of cats and dogs for
differentiating between cats and dogs. The output of the mental
model can be a solution of the problem domain such as "yes" the
first image is of a cat or "no" the first image is not of a
cat.
[0065] In view of the foregoing, the pedagogical programming
language Inkling.TM. can be configured to enable an author to
define each of the one or more concept nodes in a mental model by
name; prediction type such as estimator, classifier, predictor, and
goal; input; output; and one or more connecting concept nodes in
the mental model including leading, input-providing concept nodes
and following, output-accepting concept nodes, for example, using
the keywords "follows" and "feeds."
Streams
[0066] In addition to one or more concepts, a mental model can
further include one or more data transformation streams or stream
nodes among the structured one or more concepts. Data can flow into
a stream node, be processed, and subsequently sent to other nodes
(e.g., concept nodes, stream nodes, or both) in the neural network
or output from the neural network.
[0067] A stream keyword declares a functional transformation of
data. Any valid Language INtegrated Query ("LINQ") statement can be
declared, and, as such, a stream node can operate directly on input
data, data from other stream nodes, data from concept nodes, from
literals, and from built in functions (for example to return random
data or sequence data). For example, the following Inkling.TM. code
block declares a functional transformation of data that is
explicitly specified:
TABLE-US-00003 Stream Double from item in input(Int32 x) select
item.x*2 => output(Int32 y)
The foregoing Inkling.TM. code block declares a stream node
"Double" that reads a 32-bit signed integer from external input to
the neural network, doubles it, and directs the result to any
subscribed listeners. The "from" and "=>" (or "into") clauses
are similar to "follows" and "feeds" used for the foregoing one or
more concepts, which specify construction of the mental model
including the one or more concepts and any streams. The select
clause can perform a data transformation, including any functions
exposed via one or more system libraries (e.g., computer vision
algorithms).
Curricula and Lessons
[0068] A curriculum is used to teach a concept to a neural network,
and there is at least a 1-way relationship between the curriculum
and the concept to be taught. For example, for every specified
concept, a curriculum is to be specified to teach the concept.
Training data is to be provided to train the neural network on the
concept, and the AI engine is to be told whether its understanding
of the concept, once taught, is correct or not. A curriculum is
analogous to a teacher assigning readings to a student from a book
and subsequently testing the student on the readings of the book or
the book itself. The ways in which the training data is presented
is broken into individual components termed "lessons." In the book
analogy, the book can be the curriculum and the lessons can be
individual chapters in the book. Lessons allow the concept to learn
bit-by-bit, rather than all at once.
[0069] A curriculum definition declares a set of one or more
lessons that can be utilized to teach a concept, each of which
lessons can be configured to optionally use a different flow of
training data. The curriculum definition specifies which concept
this curriculum trains, which simulation should be used with this
curriculum, and the objective function used to evaluate the
learning system's performance. For example, the following
Inkling.TM. code block declares a curriculum for training the
foregoing "get_high_score" concept:
TABLE-US-00004 curriculum get_high_score_curriculum train
get_high_score with simulator
breakout_simulator(BreakoutConfig):(GameState) objective score #
get_high_score lesson(s) specified here end
In the foregoing Inkling.TM. code block, the keyword "curriculum"
names the curriculum (e.g., "get_high_score_curriculum") and
declares a set of lessons (see "#get_high_score lesson(s) specified
here" comment) used to teach a concept. The keyword "train"
indicates the concept by name (e.g., "get_high_score") that the
curriculum is to train; the keyword "with" specifies a subsequent
training data-source type (e.g., a simulator, a training-data
generator, a training-data database) that should be used with the
curriculum followed by the training data-source name (e.g.,
"breakout_simulator"); and the keyword "objective" specifies an
objective function or goal (e.g., score) used to evaluate the
neural network's performance and, thus, a termination condition for
the concept node to be trained. As such, the
"get_high_score_curriculum" trains the concept "get_high_score"
using a Breakout simulator named "breakout_simulator," which
simulator can be written in any language (e.g., python). The
objective of "get_high_score_curriculum" is to increase the score
as much as possible.
[0070] In another example, the following Inkling.TM. code block
declares a curriculum for training the foregoing "ball_location"
concept:
TABLE-US-00005 curriculum ball_location_curriculum train
ball_location with simulator
breakout_simulator(BreakoutConfig):(GameState) objective
ball_location_distance # ball_location lesson(s) specified here
end
In the foregoing Inkling.TM. code block, the keyword "curriculum"
names the curriculum (e.g., "ball_location_curriculum") and
declares a set of lessons (see "#ball_location lesson(s) specified
here" comment) used to teach a concept. The keyword "train"
indicates the concept by name (e.g., "ball_location") that the
curriculum is to train; the keyword "with" specifies a subsequent
training data-source type (e.g., a simulator, a training-data
generator, a training-data database) that should be used with the
curriculum followed by the training data-source name (e.g.,
"breakout_simulator"); and the keyword "objective" specifies the
goal (e.g., ball_location_distance) used to evaluate the neural
network's performance and, thus, a termination condition for the
concept node to be trained. As such, the "ball_location_curriculum"
trains the concept "ball_location" using the Breakout simulator
named "breakout_simulator." In the "ball_location_curriculum," the
"ball_location" concept is trained using a different objective
function than the "get_high_score_curriculum," namely
"ball_location_distance," which measures the distance between the
AI model's prediction of the ball location and the actual ball
location as calculated inside the simulator's simulation.
[0071] In view of the foregoing, the pedagogical programming
language Inkling.TM. can be configured to enable an author to
define each of the one or more curriculums by name; the concept
node to be trained; training data-source type; training data-source
name; one or more lessons of the curriculum for the concept node to
be trained; and objective for the concept node to be trained. A
termination condition for the objective is detailed further with
respect to the one or more lessons of the curriculum.
[0072] Going back to the book analogy, the book can be the
curriculum and the lessons can be individual chapters in the book.
Every curriculum for teaching a concept will have one or more
lessons, which lessons are declared within the context of a
curriculum (e.g., see foregoing "#get_high_score lesson(s)
specified here" and "#ball_location lesson(s) specified here"
comments). Lessons give the programmer control over neural-network
training. For example, the following Inkling.TM. code block
declares a lesson, namely "score_lesson" for the
"get_high_score_curriculum" for training the foregoing
"get_high_score" concept:
TABLE-US-00006 lesson score_lesson configure constrain
bricks_percent=0.5, constrain level=1, constrain paddle_width=4
until maximize score
For another example, the following Inkling.TM. code block declares
two lessons, namely "no_bricks" and "more_bricks," for the
"ball_location_curriculum" for training the foregoing
"ball_location" concept:
TABLE-US-00007 lesson no_bricks configure constrain
bricks_percent=0.5, constrain level=1, constrain paddle_width=4
until minimize ball_location_distance lesson more_bricks follows
no_bricks configure constrain bricks_percent=0.8, constrain
level=20, constrain paddle_width=1 until minimize
ball_location_distance
[0073] In the foregoing Inkling.TM. code block for the
"score_lesson," the keyword "lesson" names the lesson (e.g.,
"score_lesson") while the keyword "configure" declares a
configuration for training data for the lesson, which provides
guidance to the instructor module as to how to configure training
for the neural network. In this example, the keyword "constrain"
constrains schema-defined fields such as "bricks_percent," "level,"
and "paddle width," wherein "bricks_percent" is limited to 0.5%,
"level" is constrained to level 1, and "paddle width" is limited to
4 in the Breakout simulator. The keyword "until" specifies training
for the neural network should be continued until the return value
for objective function "score" is maximized per the keyword
"maximize." Once training starts, the AI engine can configure and
play the simulator until the AI model maximizes the score as best
it can or training is terminated by some other condition.
[0074] In the foregoing Inkling.TM. code block for the "no_bricks"
lesson, the keyword "lesson" is also used to name the lesson (e.g.,
"no_bricks") and the keyword "configure" is used to declare a
configuration for training data for the lesson, which happens to
use the same constraints as the "score_lesson." The keyword "until"
is also used in the "no_bricks" lesson to specify how extensive
training for the neural network should be; however, the return
value for objective function "ball_location_distance" for the
"no_bricks" lesson is to be minimized per the keyword
"minimize."
[0075] In the foregoing Inkling.TM. code block for the
"more_bricks" lesson, the keyword "lesson" names the lesson (e.g.,
"more_bricks"), and the optional keyword "follows" indicates a
preceding lesson (e.g., "no_bricks"), which can be used to specify
an order of lessons in a curriculum for training a concept. If not
the keyword "follows" is not used to specify an order of lessons,
lessons are executed in parallel, which slows training of the
neural network. Again, the keyword "configure" declares a
configuration for training data for the lesson, which, in this
case, constrains the schema-defined "bricks_percent" to 0.8%,
"level" to level 20, and "paddle width" to 1 in the Breakout
simulator. Like the "no_bricks" lesson, the objective function
"ball_location_distance" for the "more_bricks" lesson is to be
minimized per the keyword "minimize."
[0076] Lessons can determine an amount of time it takes for
training a neural network. More complex lessons can build on other,
simpler lessons to reduce the amount of time it takes for training
a neural network. For example, if a neural network is to be trained
on the "ball_location" concept with the "ball_location_curriculum,"
the neural network can be firstly trained with the "no_bricks"
lesson, which describes an easier version of Breakout with fewer
bricks (e.g., constrain bricks_percent=0.5), a lower level (e.g.,
constrain level=1), and a wider paddle (e.g., constrain
paddle_width=4). Once the AI model consistently returns minimized
values for the objective function "ball_location_distance" for the
easier environment of the "no_bricks" lesson, the neural network
can be secondly trained with the "more_bricks" lesson, which
describes a more difficult version of Breakout with more complexity
including more bricks (e.g., constrain bricks_percent=0.8), a
higher level (e.g., constrain level=20), and a narrower paddle
(e.g., constrain paddle_width=1). In this way, the AI model can
progress from an easier environment to more and more complex
environments.
[0077] In view of the foregoing, the pedagogical programming
language Inkling.TM. can be configured to enable an author to
define each of the one or more lessons by name; a leading lesson to
follow via keyword "follows"; data configuration for the lesson via
keyword "configure"; and the termination condition for the
curriculum-defined objective for the concept node to be
trained.
Schemas
[0078] Schema references or schemas in Inkling.TM. describe data
types or the structure of data such as input data for a mental
model, data between one or more concept nodes of a mental model,
data between one or more stream nodes of a mental model, and output
data of a mental model. Because the architect module maps one or
more nodes of a mental model onto one or more modes of a neural
network, schemas also describe the structure of data such as input
data into a neural network, data among nodes of a neural network,
and output data of a neural network. As such, the pedagogical
programming language Inkling.TM. is configured to enable an author
to define schemas describing one or more data types to be streamed
through a mental model including one or more concept nodes and one
or more stream nodes.
[0079] Data types are the most basic building blocks for data
manipulation. A data type provides information regarding the
meaning of corresponding data, the possible values of the data, the
operations that can be performed on the data, and the way the data
can be stored. Supported data types in Inkling.TM. include, but are
not limited to, primitive data types, which include data types
selected from strings (e.g., String), integers (e.g., Int8, Int16,
Int32, Int64, UInt8, UInt16, UInt32, UInt64), floats (e.g., Double,
Float64, Float32), and Booleans (e.g., Bool); structured data types
(e.g., structured data types for machine learning); constrained
data types with range expressions limiting the data of the
constrained data types including primitive data types constrained
with a range expression; native data types such as data types for
working with media formats (e.g., images, audio, video, etc.); and
combinations thereof. For native data types, metadata from, for
example, media formats such as images, audio, and video can be used
to guide training of a neural network and improve learning of the
neural network.
[0080] With reference to FIGS. 4C-4E, each connector of a number of
connectors between connected nodes of a mental model can include a
data type such as one of the foregoing data types (e.g., primitive
data types, structured data types, constrained data types, and
native data types), and the mental-model designer 412 of the IDE
can be configured to color code the number of connectors in the
mental model to indicate whether the data type between the
connected nodes of the mental model is correct or not for each
connector.
[0081] Schemas are expressed as records and can include a set of
one or more fields, each of which fields can have a name and a data
type that can be used for data manipulation. Schemas expressed as
named records are named schemas, while schemas expressed as unnamed
records are anonymous schemas. For example, a schema including a
set of one or more field declarations in the record where the
schema name would otherwise appear can be an anonymous schema. The
following Inkling.TM. code blocks, for example, declares schemas
used in the examples herein above, namely "GameState" "PlayerMove,"
and "BreakoutConfig":
TABLE-US-00008 schema GameState ( Luminance(84, 84) pixels # board
state ) schema PlayerMove ( String{"left", "no move", "right"} move
) schema BreakoutConfig ( UInt32 level, # `level`, `paddle_width`,
`bricks_percent` UInt8 paddle_width, # are matched below in
constrain clauses Float32 bricks_percent )
[0082] With respect to the foregoing Inkling.TM. code blocks, the
schema "GameState" is configured to represent input such as a
grayscale image of a Breakout screen from the Breakout simulator.
"Luminance" names a structured data type used in machine learning,
which declares the input is a grayscale image of the Breakout
screen where the values of the data are floats between 0 (black)
and 1 (white). The schema "PlayerMove" is configured to represent
output such as moves available for the Breakout paddle. "String"
names a primitive data type, which declares the output is a move to
the left, no move, or a move to the right. Likewise, the schema
"BreakoutConfig" is configured to represent data regarding
different configurations or aspects of Breakout play including
level, paddle width, and percent of bricks on a screen. "UInt32"
names a primitive data type for the level using an unsigned 32-bit
integer; "UInt8" names a primitive data type for the paddle width
using an unsigned 8-bit integer; and "Float32" names a primitive
data type for the percent of bricks on the screen using a 32-bit
float.
[0083] The Inkling.TM. compiler can be configured to check (e.g.,
static check) to verify that the schemas in an Inkling.TM. file are
valid in the context in which they are used. However, the compiler
does not enforce the schema--a streaming demon enforces the schema.
Upon executing the compiler on an Inkling.TM. file, the compiler
can match-check the schemas and report one or more errors if the
schemas expected to match do not match. The match-check is
structural, not name based. Field names do not matter. For example,
the match-check is structural in that a pair of the schemas with
different schema names can match if the pair of the schemas define
the same list of field types in the same order. For structured data
types with size, the sizes must be equal. In addition, two
references by name to the same schema match because a schema
matches itself. Two anonymous schemas match if both anonymous
schemas define the same field types in the same order. And a schema
referenced by name matches an anonymous schema if both define the
same field types in the same order.
Blocks
[0084] A block in Inkling.TM. is a unit of reuse. A block is a
collection of one or more schemas, one or more concept nodes, one
or more stream nodes, or a combination thereof that can be used and
reused by an Inkling.TM. author; however, blocks do not include any
curriculums. Authors do not need to know the internals of a block.
A block can include a single input and a single output using
reserved names for the input and the output. A block can use an
import statement to access concepts and streams outside the
block.
[0085] A block encapsulates a portion of a mental model. Each block
in an Inkling.TM. file can include one or more block-encapsulated
concept nodes, one or more block-encapsulated stream nodes, and one
or more block-encapsulated schemas without any curriculums for
training the neural network. Each block in an Inkling.TM. file can
be configured to accept input from any one or more of the one or
more concept nodes or the one or more stream nodes of the mental
model, as well as provide output to any other one of the one or
more concept nodes or the one or more stream nodes of the mental
model.
[0086] Other features of the AI systems and methods provided herein
can be better understood with reference to the following:
Foundational Primitives
[0087] AI systems and methods provided herein enable a
teaching-oriented approach by providing a set of foundational
primitives that can be used to represent AI without specifying how
the AI is created. These foundational primitives are 1) concepts
and mental models, 2) curricula and lessons, and 3) training-data
sources, as described in further detail herein. Concepts and mental
models, as well as curricula and lessons, can be expressed in a
pedagogical programming language.
AI Engine
[0088] The AI system 600 (see FIG. 6) enables developers to more
efficiently build, teach, and use intelligence models.
[0089] The AI engine takes in a description of a problem and how
one would go about teaching concepts covering aspects of the
problem to be solved, and the AI engine compiles the coded
description into lower-level structured data objects that a machine
can more readily understand, builds a network topology of the main
problem concept and sub-concepts covering aspects of the problem to
be solved, trains codified instantiations of the sub-concepts and
main concept, and executes a trained AI model containing one, two,
or more neural networks.
[0090] The AI engine can abstract away and automate the low-level
mechanics of AI, and the AI engine can manage and automate much of
the lower level complexities of working with AI. Each program
developed in a pedagogical programming language can be fed into the
AI engine in order to generate and train appropriate intelligence
models, which can be referred to as Basic Recurrent Artificial
Intelligence Networks ("BRAINs") herein. At its heart, a BRAIN can
be a topology or a basic network of intelligent processing nodes
that comprise a potentially recurrent network, hence the acronym
"BRAIN."
[0091] The AI engine can abstract generation of a neural network
topology for an optimal solution and faster training time with a
curriculum and lessons to teach the neural network via recursive
simulations and training sessions on each node making up the neural
network.
[0092] The AI engine can contain a vast array of machine learning
algorithms for various AI models, has logic for picking learning
algorithms and guiding training, manages data streaming and data
storage, and provides the efficient allocation of hardware
resources. The AI engine can be built with an infrastructure that
supports streaming data efficiently through the system, and the AI
engine can use a set of heuristics to make choices about which
learning algorithms to use to train each BRAIN. The set of
heuristics also make it possible for the AI engine to choose from
any number of possible algorithms, topologies, etc., train a number
of BRAINs in parallel, and pick the best result.
[0093] The AI engine can be a cloud-hosted platform-as-a-service
configured to manage complexities inherent to training AI networks.
Thus, the AI engine can be accessible with one or more client-side
interfaces to allow third parties to submit a description of a
problem in a pedagogical programming language with and let the
online AI engine build and generate a trained intelligence model
for one or more of the third parties.
Major AI-System Components
[0094] FIG. 6 provides a schematic illustrating an AI system 600
including an AI engine in accordance with some embodiments.
[0095] The details for any given implementation of a BRAIN server
may vary substantially, but many have common architectural
components such as the following six components: 1) an architect
module, 2) an instructor module, 3) a learner module, 4) a
hyperlearner module, 5) a compiler, and 6) one or more interfaces
exchanging communications into and out of the AI engine.
[0096] Following on the AI system 200 of FIGS. 2A and 3A, the AI
system 600 includes the coder 212 on the one or more client systems
and the following on the one or more server systems: the compiler
222; the AI-generator modules including the instructor module 324,
the architect module 326, and the learner module 328, the
hyperlearner module 325, and the predictor module 329. In addition
to the foregoing, the AI system 600 can include a training data
loader 621 configured to load training data, a training data
database 614a, a simulator 614b, and a streaming data server 623.
The training data can be batched training data, streamed training
data, or a combination thereof, and a training data manager can be
configured to push or pull the training data from one or more
training data sources selected from a simulator, a training-data
generator, a training-data database, or a combination thereof. A
batch data source can supply batched data from a database in at
least one embodiment. A random-data generator can generate random
data based on user-input parameters. Further in addition to the
foregoing, FIG. 6 shows the architect module 326 configured to
propose a neural network layout such as the neural network layout
102 and the learner module 328 configured to save a trained state
of a neural network such as the trained neural network 106.
Architect Module
[0097] The architect module is the component of the system
responsible for proposing and optimizing learning topologies (e.g.,
neural networks) based on mental models.
[0098] Neural networks can be based on a large collection of neural
units loosely modeling the way a biological brain solves problems
with large clusters of biological neurons connected by axons. Each
neural unit is connected with many others, and links can be
enforcing or inhibitory in their effect on the activation state of
connected neural units. Each individual neural unit can have, for
example, a summation function, which combines the values of all its
inputs together. There may be a threshold function or limiting
function on each connection and on the unit itself such that it
must surpass it before it can propagate to other neurons. These
systems are self-learning and trained rather than explicitly
programmed and excel in areas where the solution or feature
detection is difficult to express in a traditional computer
program.
[0099] Neural networks can consist of multiple layers or a cube
design, and the signal path can traverse from front to back. The
goal of the neural network is to solve problems in the same way
that the human brain would, although several neural networks are
much more abstract. Modern neural network projects typically work
with a few thousand and up to a few million neural units and
millions of connections.
[0100] The architect module can take the codified mental model and
pedagogy and propose a set of candidate low-level learning
algorithms, topologies of a main concepts and sub-concepts, and
configurations thereof the architect module believes will best be
able to learn the concepts in the model. This is akin to the work
that a data scientist does in the toolkit approach, or that the
search system automates in the approach with statistical data
analysis tools. Here, it is guided by the pedagogical program
instead of being a broad search. The architect module can employ a
variety of techniques to identify such models. The architect module
can generate a directed graph of nodes or a low-level instantiation
of a high-level mental model. The architect module can break down
the problem to be solved into smaller tasks/concepts all factoring
into the more complex main problem trying to be solved. The
architect module can instantiate a main concept and layers of
sub-concepts feeding into the main concept. The architect module
can generate each concept including the sub-concepts with a tap
that stores the output action/decision and the reason why that node
reached that resultant output (e.g., what parameters dominated the
decision and/or other factors that caused the node to reach that
resultant output). This stored output of resultant output and the
reasons why the node reached that resultant output can be stored in
the trained intelligence model. The tap created in each
instantiated node allows explainability for each step in an
intelligence model on how a trained intelligence model produces its
resultant output for a set of data input. The architect module can
reference a database of algorithms to use as well as a database of
network topologies to utilize. The architect module can reference a
table or database of best suggested topology arrangements including
how many layers of levels in a topology graph for a given problem,
if available. The architect module also has logic to reference
similar problems solved by comparing signatures. If the signatures
are close enough, the architect module can try the topology used to
optimally solve a problem stored in an archive database with a
similar signature. The architect module can also instantiate
multiple topology arrangements all to be tested and simulated in
parallel to see which topology comes away with optimal results. The
optimal results can be based on factors such as performance time,
accuracy, computing resources needed to complete the training
simulations, etc.
[0101] In some embodiments, for example, the architect module can
be configured to propose a number of neural networks and
heuristically pick an appropriate learning algorithm from a number
of machine learning algorithms in one or more databases for each of
the number of neural networks. The instructor module and the
learner module can be configured to train the number of neural
networks in parallel. The number of neural networks can be trained
in one or more training cycles with the training data from one or
more training data sources. The AI engine or a predictor module
thereof can subsequently instantiate a number of trained neural
networks based on the concepts learned by the number of neural
networks in the one or more training cycles, and the AI engine can
identify a best trained neural network (e.g., by means of optimal
results based on factors such as performance time, accuracy, etc.)
among the number of trained neural networks.
[0102] The user can assist in building the topology of the nodes by
setting dependencies for particular nodes. The architect module can
generate and instantiate neural network topologies for all of the
concepts needed to solve the problem in a distinct two-step
process. The architect module can generate a description of the
network concepts. The architect module can also take the
description and instantiate one or more topological shapes, layers,
or other graphical arrangements to solve the problem description.
The architect module can select topology algorithms to use based on
factors such as whether the type of output the current problem has
either 1) an estimation output or 2) a discrete output and then
factors in other parameters such as performance time to complete
the algorithm, accuracy, computing resources needed to complete the
training simulations, originality, amount of attributes, etc.
Instructor Module
[0103] The instructor module is a component of the system
responsible for carrying out a training plan codified in a
pedagogical programming language. Training can include teaching a
neural network to get one or more outcomes, for example, on a
simulator. The training can involve using a specific set of
concepts, a curriculum, and lessons, which can be described in a
file expressed in a pedagogical programming language. The
instructor module can train easier-to-understand tasks earlier than
more complex tasks. Thus, the instructor module can train
sub-concept nodes and then higher-level nodes. The instructor
module can train sub-concept nodes that are dependent on other
nodes after those other nodes are trained. However, multiple nodes
in a graph may be trained in parallel. The instructor module can
run simulations on the nodes with input data including statistics
and feedback on results from the node being trained from the
learner module. The learner module and instructor module can work
with a simulator or other data source to iteratively train a node
with different data inputs. The instructor module can reference a
knowledge base of how to train a node efficiently by different ways
of flowing data to one or more nodes in the topology graph in
parallel, or, if dependencies exist, the instructor module can
train serially with some portions of lessons taking place only
after earlier dependencies have been satisfied. The instructor
module can reference the dependencies in the topology graph, which
the dependencies can come from a user specifying the dependencies
and/or how the arrangement of nodes in the topology was
instantiated. The instructor module can supply data flows from the
data source such as a simulator in parallel to multiple nodes at
the same time where computing resources and a dependency check
allows the parallel training.
Learner Module
[0104] The learner module is a component of the system configured
to carry out the actual execution of the low-level, underlying AI
algorithms. In training mode, the learner module can instantiate a
system conforming to what was proposed by the architect module,
interface with the instructor module to carry out the computation
and assess performance, and then execute the learning algorithm
itself. In execution mode, the learner module can instantiate and
execute an instance of the already trained system. Eventually, the
learner module writes out network states for each trained sub-node
and then a combination of the topological graph of the main node
with all of the sub-nodes into a trained intelligence model
referred to herein as a BRAIN. The learner module can also write
the stored output of each node and why that node arrived at that
output into the BRAIN, which gives explainability as to how and why
the AI proposes a solution or arrives at an outcome.
Hyperlearner Module
[0105] The hyperlearner module can perform a comparison of a
current problem to a previous problem in one or more databases. The
hyperlearner module can reference archived, previously built and
trained intelligence models to help guide the instructor module to
train the current model of nodes. The hyperlearner module can parse
an archive database of trained intelligence models, known past
similar problems and proposed solutions, and other sources. The
hyperlearner module can compare previous solutions similar to the
solutions needed in a current problem as well as compare previous
problems similar to the current problem to suggest potential
optimal neural network topologies and training lessons and training
methodologies.
Transformer
[0106] The transformer can carry out streaming data transformations
that do not require learning. When authors create BRAIN models,
some concepts do not require learning and code specifying
explicitly how to calculate them can be specified. For example, if
an author wants to use the concept of a moving average, rather than
have the system learn how to calculate the moving average, the
author can explicitly specify how to calculate the moving average.
Such transformations can take the form of "stream" statements in a
pedagogical programming language such as Inkling.TM.. The
transformer can carry out the actual execution of such
transformations when needed.
Predictor Module
[0107] After an algorithm is trained, the trained neural network
can be hosted in a "prediction mode." The prediction mode can hold
a neural network for use as an HTTP API endpoint. The programmer
can then send input data to the predictor module and get back a
prediction.
Compiler
[0108] The compiler module automates conversion and compiling of
the pedagogical programming language describing the problem (main
concept) and sub-concepts factoring into the problem. Each
statement recited in the pedagogical programming language can be
complied into a structured data object's defined fields, which can
later be generated and instantiated into its own sub-concept node
by the architect module. Each node can have one or more inputs one
or more neural networks to process the input data and a resulting
output decision/action. The compiled statements, commands, and
other codifications fed into the AI compiler can be transformed
into a lower level AI specification.
Client-Server Interfaces
[0109] The AI system provided herein can include one or more
client-server interfaces selected from at least a command-line
interface, a graphical interface, a web-based interface, or a
combination thereof. Each of the client-server interfaces includes
a client-side client-server interface and a server-side
client-server interface configured to cooperate or communicate with
each other such that a user on a client can work online with a
server including the AI engine. As such, one or more server-side
client-server interfaces are configured to respectively cooperate
with one or more client-side client-server interfaces and vice
versa. In a first example of a client-server interface, namely a
web-based interface, a client-side web-based interface (e.g., a web
browser-based application used in a textual or graphical user
environment) is configured to cooperate with a server-side
web-based interface. In a second example of a client-server
interface, namely a command-line interface, a client-side
command-line interface (e.g., a command line-based application used
in command-line interpreter such as Bash or cmd.exe) is configured
to cooperate with a server-side command-line interface.
Graphical Interface
[0110] A graphical interface can include web-based interface
through, for example, a browser, and the graphical interface can
include a non-web-based interface accessed through, for example, a
native client application other than a web browser such as an
integrated development environment. The graphical interface can be
configured to, for example, request information for creating a new
BRAIN such as a name for the new BRAIN, a description for the new
BRAIN, and a link to store code the new BRAIN is to execute.
[0111] With respect to a web-based interface, the graphical
interface can include an open tab or a portion thereof in browser,
a pop-up window of the browser, a pop-under window of the browser,
a plugin element of the browser, or any other browser element
configured to request and accept input. The web-based interface can
include a browser-based tool configured to access a web site for
configuring and analyzing BRAINs stored in the AI engine. The web
site can be used for sharing, collaborating, and learning. Some
information that can be accessed from the web site is a
visualization of a BRAIN's training progress.
[0112] With respect to a non-web-based interface, the graphical
interface can likewise represent an open tab or a portion thereof,
a pop-up window, a pop-under window, a plugin element, or any other
element configured to request and accept input such as a dialog
box, wherein the graphical interface is the native client
application other than the web browser. In some embodiments, the
graphical interface is the IDE provided herein.
[0113] Command Line Interface ("CLI")
[0114] A command-line interface can include a command line-based
program used in a command-line interpreter such as Bash or cmd.exe.
Alternatively, the command-line interface can include a web-based
interface through, for example, a browser or any browser element
thereof, which browser can be textual or graphical. The
command-line interface can be configured to request information
through a prompt for creating a new BRAIN such as a name for the
new BRAIN.
[0115] The CLI can be configured to enable users to configure the
AI engine. The CLI is especially useful for automation and
connection (e.g., via piping) to other tools. Some actions that can
be performed using the CLI include starting and naming a BRAIN,
loading a file written in a pedagogical programming language,
training the BRAIN, and connecting the BRAIN to a simulator.
Simulator
[0116] If the curriculum trains using a simulation or procedural
generation, the data for a lesson is not data to be passed to the
learning system, but data is to be passed to the simulator.
Otherwise, then the data can be optionally filtered/augmented in
the lessons before being passed to the learning system. The
simulator can use this data to configure itself, and the simulator
can subsequently produce a piece of data for the learning system to
use for training. This separation permits a proper separation of
concerns. The simulator is the method of instruction, and the
lesson provides a way to tune that method of instruction, which
makes it more or less difficult depending on the current level of
mastery exhibited by the learning system. A simulation can run on a
client machine and stream data to the AI engine for training. In
such an embodiment, the client machine needs to remain connected to
the AI engine while the BRAIN is training. However, if the client
machine is disconnected from the server of the AI engine, it can
automatically pick up where it left off when it is reconnected.
[0117] Note, 1) simulations and procedural generation are a good
choice versus data in a variety of circumstances; and 2) concepts
are a good choice versus streams when you can more easily teach
versus calculate.
[0118] Simulators can be reused to teach multiple concepts.
Modes of Operation
[0119] A BRAIN server has at least three modes of operation:
authoring/debugging, training, and execution (or prediction). In
practice, all three can run concurrently, and most implementations
of a BRAIN server are high-availability, multi-tenant, distributed
systems. That being said, each individual user generally works in
one mode of operation at a time.
Authoring/Debugging Mode
[0120] When in authoring/debugging mode of operation, a BRAIN
server can be tuned to assisting a user in iteratively developing a
mental model and pedagogy. For example, in the authoring/debugging
mode a user can set breakpoints on nodes in a BRAIN model, and when
a breakpoint is hit the user can inspect the chain of stream
processing leading up to that node. Even though a given node can
represent a neural network or other complex AI learning system,
because of the way training is conducted, the system can encode and
decode from high-dimensional tensor representations into the output
types associated with a concept. This does not mean that
high-dimensional representations are necessarily collapsed between
nodes, just that decoders are learned for all nodes. In addition to
this direct model-inspection capability, an author can similarly
debug curricula. For example, one can set a watch condition on a
particular lesson and compare the actual training performance and
adapted learning execution plan versus the canonical, codified
lesson ordering. Advanced users can inspect the underlying learning
algorithms themselves, and debugging tooling can assist in
visualizing what was actually learned in concepts that are not
understood as intended.
[0121] Since many developers might be concurrently working on a
given BRAIN model, the authoring mode also handles keeping
representations that are under development, in training, and
deployed separate.
Training Mode
[0122] When in training mode of operation, the instructor module
and the learner module are configured to i) instantiate the neural
network conforming to the neural network proposed by the architect
module and ii) train the neural network. To effect the foregoing,
the BRAIN server can take compiled code and generate a BRAIN
learning topology, and proceed to follow the curricula to teach the
concepts as specified. Depending on the model, training can
potentially take substantial amounts of time. Consequently, the
BRAIN server can provide interactive context on the status of
training. For example, the BRAIN server can show which nodes are
actively being trained, the current belief about each node's
mastery of its associated concept, overall and fine-grained
accuracy and performance, the current training execution plan, and
an estimate of completion time. As such, in some embodiments, the
AI engine can be configured to provide one or more training status
updates on training a neural network selected from i) an estimation
of a proportion of a training plan completed for the neural
network, ii) an estimation of a completion time for completing the
training plan, iii) the one or more concepts upon which the neural
network is actively training, iv) mastery of the neural network on
learning the one or more concepts, v) fine-grained accuracy and
performance of the neural network on learning the one or more
concepts, and vi) overall accuracy and performance of the neural
network on learning one or more mental models.
[0123] Because the process of building pedagogical programs is
iterative, the BRAIN server in training mode can also provide
incremental training. That is to say, if the code is altered with
respect to a concept that comes after other concepts that have
already been trained, those antecedent concepts do not need to be
retrained.
[0124] Additionally, in training mode, the user is able to specify
what constitutes satisfactory training should the program itself
permit indefinite training.
[0125] When starting a training operation, the instructor module
can first generate an execution plan. This is the ordering the
instructor module intends to use when teaching the concepts, and,
for each concept, the lessons the instructor module intends to
teach in what order. While the execution plan is executing, the
instructor module can jump back and forth between concepts and
lessons to optimize the learning rate. By not being required to
train each concept fully before starting to train dependent
concepts, the system can naturally avoid certain systemic
machine-learning problems such as overfitting. The major techniques
used to determine when to switch between lessons and concepts for
training are reinforcement learning and adaptive learning. For
example, for a first main problem of determining an amount of
bankruptcy filings in the United States, a first sub-node can be
trained in a first lesson on how to determine bankruptcy filings in
California. A second lesson can train the first sub-node on how to
determine bankruptcy filings in California and York. Successive
lessons on a node can build upon and augment earlier lessons that
the node was trained on in a training session.
Execution Mode
[0126] When in execution mode or prediction mode of operation, a
predictor AI module can be configured to i) instantiate and execute
the trained neural network on the training data for one or more
predictions in the predicting mode. To effect the foregoing, a
BRAIN server can take a trained BRAIN model, enable API endpoints
so that data can be streamed to and from the model, and then
optimize its distribution for performance. Because learned and
specified data transformations can be functional in nature, the
transformations can be automatically parallelized and distributed
to hardware that can accelerate their execution. Text processing,
for example, can be distributed to a cluster of machines with
substantial CPU resources, while nodes leveraging deep learning
might be similarly distributed to a cluster of machines with
substantial GPU resources.
[0127] Operational management of the executing BRAIN model can also
be undertaken in this mode. This includes monitoring data ingestion
rates, execution performance (both in terms of speed and accuracy),
logs, event subscriptions, or the like through an operational
dashboard.
[0128] Other features of the AI systems and methods provided herein
for authoring/debugging, training, and execution (or prediction)
can be better understood with reference to the following:
Algorithm Selection
[0129] A first step a BRAIN server can take is to pick an
appropriate learning algorithm to train a mental model. This is a
notable step in training AI, and it is a step those without AI
expertise cannot perform without expert guidance. The BRAIN server
can have knowledge of many of the available learning algorithms, as
well as a set of heuristics for picking an appropriate algorithm
including an initial configuration to train from.
[0130] For example, if the BRAIN server picks Deep Q-Learning for
training a mental model, it would also pick an appropriate
topology, hyper-parameters, and initial weight values for synapses.
A benefit of having the heuristics available to be used
programmatically is that the BRAIN server is not limited to a
single choice; it can select any number of possible algorithms,
topologies, etc., train a number of BRAINS in parallel, and pick
the best result.
[0131] The process of picking an appropriate algorithm, etc., is
performed by a BRAIN that has been trained (and will continue to be
trained) by the AI engine, meaning the BRAIN will get better at
building BRAINs each time a new one is built. A trained AI-engine
neural network such as a BRAIN thereby provides enabling AI for
proposing neural networks from assembly code and picking
appropriate learning algorithms from a number of machine learning
algorithms in one or more databases for training the neural
networks. The AI engine can be configured to continuously train the
trained AI-engine neural network in providing the enabling AI for
proposing the neural networks and picking the appropriate learning
algorithms thereby getting better at building BRAINs.
[0132] The architect module can also use heuristics, mental model
signatures, statistical distribution inference, and meta-learning
in topology and algorithm selection:
[0133] First, the architect module can be configured to
heuristically pick an appropriate learning algorithm from a number
of machine learning algorithms in one or more databases for
training the neural network proposed by the architect module. Many
heuristics regarding the mental model can be used to inform what
types of AI and machine learning algorithms can be used. For
example, the data types used have a large influence. For this
reason, a pedagogical programming language can contain rich native
data types in addition to the basic data types. If the architect
module sees, for example, that an image is being used, a
convolutional deep learning neural network architecture might be
appropriate. If the architect module sees data that is temporal in
nature (e.g., audio data, sequence data, etc.), then a recursive
deep-learning neural network architecture like a long short-term
memory ("LSTM") network might be more appropriate. The collection
of heuristics can be generated by data science and machine
learning/AI experts who work on the architect module codebase, and
who attempt to capture the heuristics that they themselves use in
practice.
[0134] The system can also calculate a signature for a mental
model. These signatures are a form of hashing such that mental
models that have similar machine learning algorithmic
characteristics have similar signatures. These signatures can then
be used in conjunction with heuristics and with meta-learning.
[0135] In addition to looking at the mental model, the architect
module can also consider the pedagogy provided in the code. It can,
for example, look at the statistical distribution of any data sets
being used; and, in the case of simulators, it can ask the
simulator to generate substantial amounts of data so as to
determine the statistics of data that will be used during training.
These distribution properties can further inform the heuristics
used.
[0136] Meta-learning is an advanced technique used by the architect
module. It is, as the name implies, learning about learning. What
this means is that as the architect module can generate candidate
algorithm choices and topologies for training, it can record this
data along with the signature for the model and the resultant
system performance. This data set can then be used in its own
learning system. Thus the architect module, by virtue of proposing,
exploring, and optimizing learning models, can observe what works
and what doesn't, and use that to learn what models it should try
in the future when it sees similar signatures.
[0137] To effect meta-learning, the AI engine can include a
meta-learning module configured to keep a record such as a
meta-learning record in one or more databases. The record can
include i) the source code processed by the AI engine, ii) mental
models of the source code and/or signatures thereof, iii) the
training data used for training the neural networks, iv) the
trained neural networks, v) how quickly the trained neural networks
were trained to a sufficient level of accuracy, and vi) how
accurate the trained neural networks became in making predictions
on the training data.
[0138] For advanced users, low-level details of a learning topology
can be explicitly specified completely or in part. The architect
module can treat any such pinning of parameters as an override on
its default behavior. In this way, specific algorithms can be
provided, or a generated model can be pinned for manual
refinement.
Guiding Training
[0139] Once an algorithm is chosen, the BRAIN server can proceed
with training the BRAIN's mental model via curricula and the
lessons thereof. The BRAIN server can manage the data streaming,
data storage, efficient allocation of hardware resources, choosing
when to train each concept, how much (or little) to train a concept
given its relevance within the mental model (e.g., dealing with
problems of overfitting and underfitting), and is generally
responsible for producing a trained BRAIN based on the given mental
model and curricula. The AI engine is thus configured to make
determinations regarding i) when to train the neural network on
each of the one or more concepts and ii) how extensively to train
the neural network on each of the one or more concepts. Such
determinations can be based on the relevance of each of one or more
concepts in one or more predictions of a trained neural network
based upon training data.
[0140] As is the case with picking an appropriate learning
algorithm, guiding training--notably avoiding overfitting and
underfitting--to produce an accurate AI solution is a task that
requires knowledge and experience in training AIs, and the BRAIN
server can have an encoded set of heuristics to manage this with
little or no user involvement. Similarly, the process of guiding
training is also a BRAIN that has been trained that will only get
smarter with each BRAIN it trains.
[0141] The AI engine can also determine when to train each concept,
how much (or little) to train each concept based on its relevance,
and, ultimately, produce a trained BRAIN. Furthermore, the AI
engine can utilize meta-learning. In meta-learning, the AI engine
keeps a record of each program it's seen, the data it used for
training, and the generated AIs that it made. It also records how
fast those AIs trained and how accurate they became. The AI engine
server learns over that dataset.
Stream Oriented, Data-Flow Processing
[0142] A BRAIN server can, under the hood, operate on streams of
data, and can thus be considered a data flow-processing system.
Data can be streamed into the BRAIN server through a traditional
program, the data can flow through the nodes in the BRAIN model
(including recurrent flows), and processed output can be made
available in either an immediate or asynchronous, event-based model
to the caller. All data that flows through the system can be
ephemeral, unless a user explicitly creates a persisted data store
in their program. At its heart, a BRAIN can be a basic network of
intelligent processing nodes that comprise a potentially recurrent
network, hence the acronym "BRAIN."
Learning Backends
[0143] Learning backends encode underlying detail needed to work
with a particular AI or machine learning algorithm. The BRAIN
server can provide many backends such as backends for deep
learning. However, learning-algorithm authors can provide their own
backends if desired. By architecting the BRAIN server in this way,
code written in a pedagogical programming language can include
another level of abstraction from a particular approach. If a new
learning algorithm is created that has superior performance to
existing algorithms, all that need be added is a new backend. The
architect module can then immediately start using the backend to
build systems, and existing programs written in a pedagogical
programming language can be recompiled without modification to take
advantage of the improved algorithms.
[0144] Learning backends use the schemas set forth in pedagogical
programming languages such as Inkling.TM. to translate big matrices
to usable values.
Online Learning
[0145] In addition to capabilities for migrating learned state,
some implementations of the BRAIN server afford features to enable
online learning. Since online learning can break the pure
functional nature of nodes via state changes during runtime,
another strategy that the system is configured to afford is
persisting training data learned online using a data daemon,
incrementally training the network at set intervals, and then
redistributing the updated network as a functional block throughout
the BRAIN server.
Migrations of Learned State
[0146] When a system has undergone substantial training achieving a
learned state, and a subsequent change to the underlying mental
models might necessitate retraining, it could be desirable to
migrate the learned state rather than starting training from
scratch. The BRAIN server can be configured to afford transitioning
capabilities such that previously learned high dimensional
representations can be migrated to appropriate, new, high
dimensional representations. This can be achieved in a neural
network by, for example, expanding the width of an input layer to
account for alterations with zero-weight connections to downstream
layers. The system can then artificially diminish the weights on
connections from the input that are to be pruned until they hit
zero and can then be fully pruned.
Deploy and Use
[0147] Once a BRAIN has been sufficiently trained, it can be
deployed such that it can be used in a production application. The
interface for using a deployed BRAIN is simple: the user submits
data (of the same type as the BRAIN was trained with) to a
BRAIN-server API and receives the BRAIN's evaluation of that
data.
[0148] As a practical example of how to use a deployed BRAIN, a
BRAIN can first be trained to recognize hand-written digits from
the Mixed National Institute of Standards and Technology ("MNIST")
dataset. An image can be created containing a handwritten digit,
perhaps directly through a touch-based interface or indirectly by
scanning a piece of paper with the handwritten digit written on it.
The image can then be downsampled to a resolution of 28.times.28
and converted to grayscale, as this is the input schema used to
train the example BRAIN. When submitted to the BRAIN-server through
the BRAIN server API, the BRAIN can take the image as input and
output a one-dimensional array of length 10 (whereby each array
item represents the probability, as judged by the BRAIN, that the
image is a digit corresponding to the index). The array could be
the value returned to the user from the API, which the user could
use as needed.
[0149] Though a linear approach to building a BRAIN is presented in
some embodiments, an author-train-deploy workflow does not have to
treated as a waterfall process. If the user decides further
refinement of a BRAIN is needed, be it through additional training
with existing data, additional training with new, supplemental
data, or additional training with a modified version of the mental
model or curricula used for training, the BRAIN-server is
configured to support versioning of BRAINs so that the user can
preserve (and possibly revert to) the current state of a BRAIN
while refining the trained state of the BRAIN until a new, more
satisfactory state is reached.
Marketplace
[0150] Because a pedagogical software programming language, such as
Inkling.TM., has been designed to enable code reuse of both the
main concept being trained as well as all of the sub concepts
feeding parameters into that main concept being trained, an AI
database can be established providing a component marketplace where
users can share and purchase each other's trained concepts. This
effectively combines a standard language package index with an app
store. By separating the concept declarations from the curricula
declarations, authors can share their trained main concepts and sub
concepts with the full mental models, while keeping the pedagogy
for training those concepts proprietary. Since many developers can
be concurrently working on a component either main concept or sub
concept of a given trained AI model, the AI database can also
handle keeping representations that are under development, in
training, and deployed as separate versions of that concept.
[0151] Two or more AI objects can be merged for recomposition and
into a new AI object that learn to work with each other in one more
sessions to form a new trained AI model. The simulation time to
fully train each of those two or more AI objects merged for
recomposition is a much shorter time than starting from scratch and
having to train the two or more concepts and then having those two
concepts having to figure out how to work with each other to
achieve an optimal result.
[0152] The AI database, AI engine, and a search engine can
cooperate for storage and retrieval of a database of AI concepts,
which can create a new subsequent AI trained object by essentially
merging one or more stored trained AI objects with more AI objects
in order to recompose to get a new trained AI model.
[0153] The AI object may be reconfigured and trained with new
coefficients for the learning algorithm. Additionally, the AI
object may also be reused with the same set of coefficients for its
learning algorithm. Again, as an example, later different versions
of an AI object may be better trained for particular task but
earlier versions of the AI object maybe more generally trained; and
thus, reusable for wider range of related tasks, to then be further
trained for that specific task.
[0154] FIG. 7A provides a schematic illustrating an AI system 700A
in accordance with some embodiments.
[0155] As shown in FIG. 7A, a user such as a software developer can
interface with the AI system 700A through an online interface;
however, the user is not limited to the online interface, and the
online interface is not limited to that shown in FIG. 7A. With this
in mind, the AI system 700A of FIG. 7A can enable a user to make
API and web requests through a domain name system ("DNS"), which
requests can be optionally filtered through a proxy to route the
API requests to an API load balancer and the web requests to a web
load balancer. The API load balancer can be configured to
distribute the API requests among multiple BRAIN service containers
running in a Docker network or containerization platform configured
to wrap one or more pieces of software in a complete filesystem
containing everything for execution including code, runtime, system
tools, system libraries, etc. The web load balancer can be
configured to distribute the web requests among multiple web
service containers running in the Docker network. The Docker
network or Docker BRAIN network can include central processing unit
("CPU") nodes and graphics processing unit ("GPU") nodes, the nodes
of which Docker network can be autoscaled as needed. The CPU nodes
can be utilized for most BRAIN-service containers running on the
Docker network, and the GPU nodes can be utilized for the more
computationally intensive components such as TensorFlow and the
learner module. As further shown in FIG. 7A, a BRAIN-service
engineer can interface with the AI system 700A through virtual
private cloud ("VPC") gateway and a hardened bastion host
configured to secure the Docker network. An
Elastisearch-Logstash-Kibana ("ELK") stack cluster can be shared
among all production clusters for dedicated monitoring and
logging.
[0156] FIG. 7B provides a schematic illustrating an AI system 700B
in accordance with some embodiments.
[0157] Following on the AI system 700A, the bastion host and one or
more CPU nodes can be on a public subnet for bidirectional
communication through an Internet gateway. One or more other CPU
nodes, as well as the GPU nodes, can be on a private subnet
communicatively coupled with the public subnet by means of a subnet
therebetween. The one or more CPU nodes on the public subnet can be
utilized by the compiler 222 of FIGS. 2A, 3A, and 5, and the
architect module 326 of FIGS. 3A and 5. The one or more other CPU
nodes on the private subnet can be utilized by the instructor
module 324 of FIGS. 3A and 5, and the GPU nodes can be utilized by
the learner module 328 and the predictor module 329 of FIGS. 3A and
5. As further shown in FIG. 7B, the private subnet can be
configured to send outgoing communications to the Internet through
a network address translation ("NAT") gateway.
Methods
[0158] A method of an AI engine include, in some embodiments,
receiving a source code, generating an assembly code, proposing a
neural-network layout, building an AI model, and training the AI
model. Receiving the source code can include receiving the source
code through an API exposed to a GUI. The GUI can be configured to
enable an author to define a mental model with a pedagogical
programming language, the mental model including an input, one or
more concept nodes, one or more optional stream nodes, and an
output. The GUI can be further configured to enable the author to
define the mental model in a textual mode, a graphical mode, or
both the textual mode and the graphical mode. Generating the
assembly code can include generating the assembly code from the
source code with a compiler of the AI engine configured to work
with the GUI. Proposing a neural-network layout can include
proposing the neural-network layout including one or more
neural-network layers from the assembly code with an architect
AI-engine module of the AI engine. Building the AI model can
include building the AI model including the one or more
neural-network layers from the neural-network layout with a learner
AI-engine module of the AI engine. Training the AI model can
include training the AI model on the mental model with an
instructor AI-engine module of the AI engine.
[0159] In such embodiments, the GUI can be an IDE including a text
editor and a mental model designer. The text editor can be
configured to enable the author to define the mental model
including one or more curriculums for training the AI model
respectively on the one or more concept nodes via typing in the
textual mode. The mental-model designer can be configured to enable
the author to define the mental model via mouse gestures in the
graphical mode. Author-based modification of the mental model by
the typing in the textual mode can automatically modify the mental
model in the mental-model designer, and author-based modification
of the mental model by the mouse gestures in the graphical mode can
automatically modify the mental-model in the text editor.
[0160] In such embodiments, the text editor can be further
configured to enable the author to set one or more breakpoints in
the source code written in the pedagogical programming language,
and the mental-model designer can be further configured to
automatically highlight the one or more concept nodes of the mental
model corresponding to the one or more breakpoints if the one or
more breakpoints are set at the one or more concept nodes.
[0161] In such embodiments, the pedagogical programming language
can be configured to enable an author to define schemas describing
one or more data types to be streamed through connected nodes of
the mental model including the input, the one or more concept
nodes, the one or more optional stream nodes, and the output. The
data types can include primitive data types selected from strings,
integers, floats, and Booleans; structured data types; constrained
data types with range expressions limiting the data of the
constrained data types; and combinations thereof.
[0162] In such embodiments, each connector of a number of
connectors between the connected nodes of the mental model can
include a data type. The mental-model designer can be further
configured to color code the number of connectors in the mental
model to indicate whether the data type between the connected nodes
of the mental model is correct or not for each connector.
[0163] In such embodiments, the IDE can be configured to support
one or more plug-ins for extended functionality of the IDE. The
extended functionality of the IDE can include, but is not limited
to, support for a) programming languages in addition to the
pedagogical programming language, b) source code management, c)
project management, d) a marketplace, e) finding software bugs, f)
checking programming style, g) and themes within the IDE, even if
the IDE is already configured for such support, which the IDE can
be.
[0164] In such embodiments, the IDE can be further configured as a
window with a menu bar, a short cut bar, or both a menu bar and a
short cut bar configured to provide access to the text editor, the
mental-model designer, training data from a training-data source,
analytical tools for analyzing aspects of training the AI model,
and tools for deploying a trained AI model.
[0165] In such embodiments, the method can further comprise mapping
with the architect module and finding a starting point for training
with the instructor module. Mapping with the architect module can
include mapping the one or more concept nodes of the mental model
on the one or more neural-network layers of the AI model. Finding
the starting point for training with the instructor module can
include finding the starting point among the one or more concept
nodes and the one or more curriculums for training the AI
model.
[0166] In such embodiments, the method can further comprise
training the AI model and terminating the training with the
instructor module. Training the AI model with the instructor module
can include training the AI model in one or more training cycles
with training data from one or more training-data sources selected
from a simulator, a training-data generator, a training-data
database, or a combination thereof based on training parameters in
the pedagogical programming language. Terminating the training can
include terminating the training of the AI model upon an instructor
module-determined terminating condition.
Network
[0167] FIG. 8 illustrates a number of electronic systems and
devices communicating with each other in a network environment in
accordance with some embodiments. The network environment 800 has a
communications network 820. The network 820 can include one or more
networks selected from an optical network, a cellular network, the
Internet, a Local Area Network ("LAN"), a Wide Area Network
("WAN"), a satellite network, a fiber network, a cable network, and
combinations thereof. In some embodiments, the communications
network 820 is the Internet. As shown, there may be many server
computing systems and many client computing systems connected to
each other via the communications network 820. However, it should
be appreciated that, for example, a single client computing system
can also be connected to a single server computing system. As such,
FIG. 8 illustrates any combination of server computing systems and
client computing systems connected to each other via the
communications network 820.
[0168] The communications network 820 can connect one or more
server computing systems selected from at least a first server
computing system 804A and a second server computing system 804B to
each other and to at least one or more client computing systems as
well. The server computing systems 804A and 804B can be, for
example, the one or more server systems 220 of FIGS. 2A and 3A. The
server computing systems 804A and 804B can respectively optionally
include organized data structures such as databases 806A and 806B.
Each of the one or more server computing systems can have one or
more virtual server computing systems, and multiple virtual server
computing systems can be implemented by design. Each of the one or
more server computing systems can have one or more firewalls to
protect data integrity.
[0169] The at least one or more client computing systems can be
selected from a first mobile computing device 802A (e.g.,
smartphone with an Android-based operating system), a second mobile
computing device 802E (e.g., smartphone with an iOS-based operating
system), a first wearable electronic device 802C (e.g., a
smartwatch), a first portable computer 802B (e.g., laptop
computer), a third mobile computing device or second portable
computer 802F (e.g., tablet with an Android- or iOS-based operating
system), a smart device or system incorporated into a first smart
automobile 802D, a smart device or system incorporated into a first
smart bicycle 802G, a first smart television 802H, a first virtual
reality or augmented reality headset 804C, and the like. The client
computing system 802B can be, for example, one of the one or more
client systems 210 of FIGS. 2A and 3A, and any one or more of the
other client computing systems (e.g., 802A, 802C, 802D, 802E, 802F,
802G, 802H, and/or 804C) can include, for example, the software
application or the hardware-based system in which the trained
neural network 106 can be deployed. Each of the one or more client
computing systems can have one or more firewalls to protect data
integrity.
[0170] It should be appreciated that the use of the terms "client
computing system" and "server computing system" is intended to
indicate the system that generally initiates a communication and
the system that generally responds to the communication. For
example, a client computing system can generally initiate a
communication and a server computing system generally responds to
the communication. No hierarchy is implied unless explicitly
stated. Both functions can be in a single communicating system or
device, in which case, the client-server and server-client
relationship can be viewed as peer-to-peer. Thus, if the first
portable computer 802B (e.g., the client computing system) and the
server computing system 804A can both initiate and respond to
communications, their communications can be viewed as peer-to-peer.
Additionally, the server computing systems 804A and 804B include
circuitry and software enabling communication with each other
across the network 820.
[0171] Any one or more of the server computing systems can be a
cloud provider. A cloud provider can install and operate
application software in a cloud (e.g., the network 820 such as the
Internet) and cloud users can access the application software from
one or more of the client computing systems. Generally, cloud users
that have a cloud-based site in the cloud cannot solely manage a
cloud infrastructure or platform where the application software
runs. Thus, the server computing systems and organized data
structures thereof can be shared resources, where each cloud user
is given a certain amount of dedicated use of the shared resources.
Each cloud user's cloud-based site can be given a virtual amount of
dedicated space and bandwidth in the cloud. Cloud applications can
be different from other applications in their scalability, which
can be achieved by cloning tasks onto multiple virtual machines at
run-time to meet changing work demand. Load balancers distribute
the work over the set of virtual machines. This process is
transparent to the cloud user, who sees only a single access
point.
[0172] Cloud-based remote access can be coded to utilize a
protocol, such as Hypertext Transfer Protocol ("HTTP"), to engage
in a request and response cycle with an application on a client
computing system such as a web-browser application resident on the
client computing system. The cloud-based remote access can be
accessed by a smartphone, a desktop computer, a tablet, or any
other client computing systems, anytime and/or anywhere. The
cloud-based remote access is coded to engage in 1) the request and
response cycle from all web browser-based applications, 3) the
request and response cycle from a dedicated on-line server, 4) the
request and response cycle directly between a native application
resident on a client device and the cloud-based remote access to
another client computing system, and 5) combinations of these.
[0173] In an embodiment, the server computing system 804A can
include a server engine, a web page management component, a content
management component, and a database management component. The
server engine can perform basic processing and operating-system
level tasks. The web page management component can handle creation
and display or routing of web pages or screens associated with
receiving and providing digital content and digital advertisements.
Users (e.g., cloud users) can access one or more of the server
computing systems by means of a Uniform Resource Locator ("URL")
associated therewith. The content management component can handle
most of the functions in the embodiments described herein. The
database management component can include storage and retrieval
tasks with respect to the database, queries to the database, and
storage of data.
[0174] In some embodiments, a server computing system can be
configured to display information in a window, a web page, or the
like. An application including any program modules, applications,
services, processes, and other similar software executable when
executed on, for example, the server computing system 804A, can
cause the server computing system 804A to display windows and user
interface screens in a portion of a display screen space. With
respect to a web page, for example, a user via a browser on the
client computing system 802B can interact with the web page, and
then supply input to the query/fields and/or service presented by
the user interface screens. The web page can be served by a web
server, for example, the server computing system 804A, on any
Hypertext Markup Language ("HTML") or Wireless Access Protocol
("WAP") enabled client computing system (e.g., the client computing
system 802B) or any equivalent thereof. The client computing system
802B can host a browser and/or a specific application to interact
with the server computing system 804A. Each application has a code
scripted to perform the functions that the software component is
coded to carry out such as presenting fields to take details of
desired information. Algorithms, routines, and engines within, for
example, the server computing system 804A can take the information
from the presenting fields and put that information into an
appropriate storage medium such as a database (e.g., database
806A). A comparison wizard can be scripted to refer to a database
and make use of such data. The applications may be hosted on, for
example, the server computing system 804A and served to the
specific application or browser of, for example, the client
computing system 802B. The applications then serve windows or pages
that allow entry of details.
Computing Systems
[0175] FIG. 9 illustrates a computing system 900 that can be,
wholly or partially, part of one or more of the server or client
computing devices in accordance with some embodiments. With
reference to FIG. 9, components of the computing system 900 can
include, but are not limited to, a processing unit 920 having one
or more processing cores, a system memory 930, and a system bus 921
that couples various system components including the system memory
930 to the processing unit 920. The system bus 921 may be any of
several types of bus structures selected from a memory bus or
memory controller, a peripheral bus, and a local bus using any of a
variety of bus architectures.
[0176] Computing system 900 typically includes a variety of
computing machine-readable media. Computing machine-readable media
can be any available media that can be accessed by computing system
900 and includes both volatile and nonvolatile media, and removable
and non-removable media. By way of example, and not limitation,
computing machine-readable media use includes storage of
information, such as computer-readable instructions, data
structures, other executable software or other data.
Computer-storage media includes, but is not limited to, RAM, ROM,
EEPROM, flash memory or other memory technology, CD-ROM, digital
versatile disks (DVD) or other optical disk storage, magnetic
cassettes, magnetic tape, magnetic disk storage or other magnetic
storage devices, or any other tangible medium which can be used to
store the desired information and which can be accessed by the
computing device 900. Transitory media such as wireless channels
are not included in the machine-readable media. Communication media
typically embody computer readable instructions, data structures,
other executable software, or other transport mechanism and
includes any information delivery media. As an example, some client
computing systems on the network 820 of FIG. 8 might not have
optical or magnetic storage.
[0177] The system memory 930 includes computer storage media in the
form of volatile and/or nonvolatile memory such as read only memory
(ROM) 931 and random access memory (RAM) 932. A basic input/output
system 933 (BIOS) containing the basic routines that help to
transfer information between elements within the computing system
900, such as during start-up, is typically stored in ROM 931. RAM
932 typically contains data and/or software that are immediately
accessible to and/or presently being operated on by the processing
unit 920. By way of example, and not limitation, FIG. 9 illustrates
that RAM 932 can include a portion of the operating system 934,
application programs 935, other executable software 936, and
program data 937.
[0178] The computing system 900 can also include other
removable/non-removable volatile/nonvolatile computer storage
media. By way of example only, FIG. 9 illustrates a solid-state
memory 941. Other removable/non-removable, volatile/nonvolatile
computer storage media that can be used in the example operating
environment include, but are not limited to, USB drives and
devices, flash memory cards, solid state RAM, solid state ROM, and
the like. The solid-state memory 941 is typically connected to the
system bus 921 through a non-removable memory interface such as
interface 940, and USB drive 951 is typically connected to the
system bus 921 by a removable memory interface, such as interface
950.
[0179] The drives and their associated computer storage media
discussed above and illustrated in FIG. 9, provide storage of
computer readable instructions, data structures, other executable
software and other data for the computing system 900. In FIG. 9,
for example, the solid state memory 941 is illustrated for storing
operating system 944, application programs 945, other executable
software 946, and program data 947. Note that these components can
either be the same as or different from operating system 934,
application programs 935, other executable software 936, and
program data 937. Operating system 944, application programs 945,
other executable software 946, and program data 947 are given
different numbers here to illustrate that, at a minimum, they are
different copies.
[0180] A user may enter commands and information into the computing
system 900 through input devices such as a keyboard, touchscreen,
or software or hardware input buttons 962, a microphone 963, a
pointing device and/or scrolling input component, such as a mouse,
trackball or touch pad. The microphone 963 can cooperate with
speech recognition software. These and other input devices are
often connected to the processing unit 920 through a user input
interface 960 that is coupled to the system bus 921, but can be
connected by other interface and bus structures, such as a parallel
port, game port, or a universal serial bus (USB). A display monitor
991 or other type of display screen device is also connected to the
system bus 921 via an interface, such as a display interface 990.
In addition to the monitor 991, computing devices may also include
other peripheral output devices such as speakers 997, a vibrator
999, and other output devices, which may be connected through an
output peripheral interface 995.
[0181] The computing system 900 can operate in a networked
environment using logical connections to one or more remote
computers/client devices, such as a remote computing system 980.
The remote computing system 980 can a personal computer, a
hand-held device, a server, a router, a network PC, a peer device
or other common network node, and typically includes many or all of
the elements described above relative to the computing system 900.
The logical connections depicted in FIG. 9 can include a personal
area network ("PAN") 972 (e.g., Bluetooth.RTM.), a local area
network ("LAN") 971 (e.g., Wi-Fi), and a wide area network ("WAN")
973 (e.g., cellular network), but may also include other networks.
Such networking environments are commonplace in offices,
enterprise-wide computer networks, intranets and the Internet. A
browser application may be resident on the computing device and
stored in the memory.
[0182] When used in a LAN networking environment, the computing
system 900 is connected to the LAN 971 through a network interface
or adapter 970, which can be, for example, a Bluetooth.RTM. or
Wi-Fi adapter. When used in a WAN networking environment (e.g.,
Internet), the computing system 900 typically includes some means
for establishing communications over the WAN 973. With respect to
mobile telecommunication technologies, for example, a radio
interface, which can be internal or external, can be connected to
the system bus 921 via the network interface 970, or other
appropriate mechanism. In a networked environment, other software
depicted relative to the computing system 900, or portions thereof,
may be stored in the remote memory storage device. By way of
example, and not limitation, FIG. 9 illustrates remote application
programs 985 as residing on remote computing device 980. It will be
appreciated that the network connections shown are examples and
other means of establishing a communications link between the
computing devices may be used.
[0183] As discussed, the computing system 900 can include a
processor 920, a memory (e.g., ROM 931, RAM 932, etc.), a built in
battery to power the computing device, an AC power input to charge
the battery, a display screen, a built-in Wi-Fi circuitry to
wirelessly communicate with a remote computing device connected to
network.
[0184] It should be noted that the present design can be carried
out on a computing system such as that described with respect to
FIG. 9. However, the present design can be carried out on a server,
a computing device devoted to message handling, or on a distributed
system in which different portions of the present design are
carried out on different parts of the distributed computing
system.
[0185] Another device that may be coupled to bus 921 is a power
supply such as a DC power supply (e.g., battery) or an AC adapter
circuit. As discussed above, the DC power supply may be a battery,
a fuel cell, or similar DC power source that needs to be recharged
on a periodic basis. A wireless communication module can employ a
Wireless Application Protocol to establish a wireless communication
channel. The wireless communication module can implement a wireless
networking standard.
[0186] In some embodiments, software used to facilitate algorithms
discussed herein can be embodied onto a non-transitory
machine-readable medium. A machine-readable medium includes any
mechanism that stores information in a form readable by a machine
(e.g., a computer). For example, a non-transitory machine-readable
medium can include read only memory (ROM); random access memory
(RAM); magnetic disk storage media; optical storage media; flash
memory devices; Digital Versatile Disc (DVD's), EPROMs, EEPROMs,
FLASH memory, magnetic or optical cards, or any type of media
suitable for storing electronic instructions.
[0187] Note, an application described herein includes but is not
limited to software applications, mobile apps, and programs that
are part of an operating system application. Some portions of this
description are presented in terms of algorithms and symbolic
representations of operations on data bits within a computer
memory. These algorithmic descriptions and representations are the
means used by those skilled in the data processing arts to most
effectively convey the substance of their work to others skilled in
the art. An algorithm is here, and generally, conceived to be a
self-consistent sequence of steps leading to a desired result. The
steps are those requiring physical manipulations of physical
quantities. Usually, though not necessarily, these quantities take
the form of electrical or magnetic signals capable of being stored,
transferred, combined, compared, and otherwise manipulated. It has
proven convenient at times, principally for reasons of common
usage, to refer to these signals as bits, values, elements,
symbols, characters, terms, numbers, or the like. These algorithms
can be written in a number of different software programming
languages such as C, C+, or other similar languages. Also, an
algorithm can be implemented with lines of code in software,
configured logic gates in software, or a combination of both. In an
embodiment, the logic consists of electronic circuits that follow
the rules of Boolean Logic, software that contain patterns of
instructions, or any combination of both.
[0188] It should be borne in mind, however, that all of these and
similar terms are to be associated with the appropriate physical
quantities and are merely convenient labels applied to these
quantities. Unless specifically stated otherwise as apparent from
the above discussions, it is appreciated that throughout the
description, discussions utilizing terms such as "processing" or
"computing" or "calculating" or "determining" or "displaying" or
the like, refer to the action and processes of a computer system,
or similar electronic computing device, that manipulates and
transforms data represented as physical (electronic) quantities
within the computer system's registers and memories into other data
similarly represented as physical quantities within the computer
system memories or registers, or other such information storage,
transmission or display devices.
[0189] Many functions performed by electronic hardware components
can be duplicated by software emulation. Thus, a software program
written to accomplish those same functions can emulate the
functionality of the hardware components in input-output
circuitry.
[0190] While the foregoing design and embodiments thereof have been
provided in considerable detail, it is not the intention of the
applicant(s) for the design and embodiments provided herein to be
limiting. Additional adaptations and/or modifications are possible,
and, in broader aspects, these adaptations and/or modifications are
also encompassed. Accordingly, departures may be made from the
foregoing design and embodiments without departing from the scope
afforded by the following claims, which scope is only limited by
the claims when appropriately construed.
* * * * *