United States Patent: (10) Patent N0.: US 7,263,462 B2 Funge Et A) - (45) Date of Patent: Aug. 28, 2007

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

US007263462B2

(12) United States Patent (10) Patent N0.: US 7,263,462 B2


Funge et a]. (45) Date of Patent: Aug. 28, 2007

(54) NON-DISRUPTIVE EMBEDDING OF 6,192,338 B1* 2/2001 Haszto et a1. ............. .. 704/257
SPECIALIZED ELEMENTS 6,216,014 B1* 4/2001 Proust et a1. ............. .. 455/558
6,363,384 B1* 3/2002 Cookmeyer et a1. ........ .. 707/10
(75) IIWBIIIOFSI John Funge, Sunnyvale, CA (Us); R011 6,389,405 B1 * 5/2002 Oatman et a1. .......... .. 706/46
Muslck, Belmont, CA (Us); D?mlel 6,467,085 B2* 10/2002 Larsson .. 717/165
Dobson, Ame/“01% CA (Us); Nlgel 6,477,553 B1 * 11/2002 Druck ............ .. 708/313
D‘f?ys San Franc1s°°> CAGE); _ 6,636,860 B2 * 10/2003 Vishnubhotla ............ .. 707/100
)hg‘chael MTcNasny’ CuPfmgiCU‘A‘SqJIS)’ 6,640,231 B1 * 10/2003 Andersen et a1. ......... .. 707/102
vsaf’zl‘ial?/l “’t‘.1nn\§’."a e’CA (S _)’WaI_‘ 2002/0165839 Al* 11/2002 Taylor et a1. . . . . . . . . .. 706/20
YeEgLO’S ATE; aPIIIiIHSIeCWA (Usgglgr’ianel 2003/0041040 Al* 2/2003 Bertrand et a1. .. 706/12
Cab’ral San Jose CA (Us) ’ 2003/0084015 A1* 5/2003 Beams et a1. . . . . . . . . .. 706/47
’ ’ 2004/0010505 Al* 1/2004 Vishnubhotla ............ .. 707/100

(73) Assignee: AiLive, Inc., Palo Alto, CA (US) 2006/0036398 A1 2/2006 Funge et al'

(*) Notice: Subject to any disclaimer, the term of this


patent is extended or adjusted under 35
USC 154(1)) by 0 days_ FOREIGN PATENT DOCUMENTS
(21) Appl' No‘: 11/036975 W0 WO 2006/015234 A2 2/2006

(22) Filed: Jan. 14, 2005


(65) Prior Publication Data * Cited by examiner
US 2006/0036398 A1 Feb, 16, 2006 Primary Examiner4Carol S. W. Tsai
(74) Attorney, Agent, or FirmiSWernofsky LaW Group PC
Related US. Application Data
. . . . 57 ABSTRACT
(60) Prov1s1onal appl1cat10n No. 60/592,980, ?led on Jul. ( )
30, 2004.
(51) Int. Cl.
A system
.
including. at least (1). specialized elements
.
that are
G06G 7/00 (2006 01) restncted to a part1cular doma1n of data analys1s or process
(52) U 5 Cl '702/179 706/20_ 706/46_ ing and (2) con?gurable data that permits the specialized
' ' ' """"""" 70660 7’07/100_’707/102’ elements to be tailored to a particular application. The
58 F 1d fCl _? _ s’ h ’ ’702/179_ con?gurable data expands applicability of the specialized
( ) 1e 0 “33121626316220 47 4 6’ elements to plural applications Within the particular domain.
’ ’ ’ ’ ’ ’ 70’6/50’ The specialized elements can be provided by a supplier to a
S 1, _ ?l f 1 h h, developer Without the supplier having detailed knowledge of
ee app lcanon e or Comp ete Seam lstory' structures and internal operations used by the particular
(56) References Cited application. The particular application can be generated by
the developer Without the developer having detailed knowl
U.S. PATENT DOCUMENTS edge of internal operations used by the specialized elements.
5,778,157 A * 7/1998 Oatman et a1. ............. .. 706/46
5,995,955 A * 11/1999 Oatman et a1. ............. .. 706/50 14 Claims, 7 Drawing Sheets

Z00

INPUT
/
INTERFACE
240

W
5111111315 220 W
sz'n'mos 107 —-u m

mmmmns DERIVED
m W

AT R ER
230
RUNTI‘ME 115

W EMILY-E12
LBRARY 200 cons 290 1g
U.S. Patent Aug. 28, 2007 Sheet 1 0f 7 US 7,263,462 B2

100
\ DOMAIN OF APPLICATIONS

110\
\ CONSTRICTION
TO PARTICULAR
ANALYSIS

v
111
\ EXPANSION

112 DEVTIME

SETTINGS
V \ 107

113 i RUNTIME
U.S. Patent Aug. 28, 2007 Sheet 2 0f 7 US 7,263,462 B2

200

INPUT
INTERFACE
240 DEVTIME 112

sTRUCTs 210 v
._>

RAw FEATURES
L E

ADDITIONAL
STRUCTS 220 m
" 270
SETTINGS 107 ——> —

PARAMETERS DERIVED
—>
m ‘r FEATURES 260
v—

FEATURIZER
28.9
RUNTIME113

RUNTIME COMPILED RESOURCES


LIBRARY 200 V
CODE 290 A V
g

Fig. 2
U.S. Patent Aug. 28, 2007 Sheet 3 0f 7 US 7,263,462 B2

300

301

Client receives modules for


specialized elements
302 & 303
Structs and parameters in the /
con?gurable data are edited so as to
identify raw features and derived
features 304

Features are instantiated


305
I
Featurizer generates resources for the
specialized elements based on the

\\\\\
instantiated features in step 305 306
l
Application’s code, the runtime
library for the specialized elements,
and the resources are linked 307

The linked code is executed


308

Training ‘and debugging accomplished


309
l
Entire package of linked code shipped /
to an end user 310

End user executes the application

Fig. 3
U.S. Patent Aug. 28, 2007 Sheet 4 0f 7 US 7,263,462 B2

SYSTEM 405

APPLICATION
400 m
522

DEVELO-~\
PER SUPPLIED
CODE 410 \ |:
RAW DERIVED
FEATURES 7 FEATURES
450 _ 460
STATE <\ _ _

INFORMATI N /
430 \~ /

‘ 510 >

a: /\
0

g v
LEARNERS 465

‘ AI ENGINE ‘ _ AI ENGINE =
{/2 m

USER 420

Fig. 4
U.S. Patent Aug. 28, 2007 Sheet 5 0f 7 US 7,263,462 B2

CODE 410

@
RAw FEATURES 450
@ VIIISIEKILIE'YELT:
I:iiééi?lééiii?léiiil?éi]
E
‘i—>i'_'§iT_I3_I; 1811121315]
H'W?liélf???/DIIRTCII‘ZQE

_53_0
V

DERIVED FEATURES
E 460
AIRCRAFT IS STALLING
530 AIRCRAFT IS ON GROUND
_ AIRCRAFT HAS TAILWIND

[11
S

|§ /\ V y
F;
O
LEARNER 465
‘ AI ENGINE ‘ AI ENGINE
' m m

USER 420

Fig. 5
U.S. Patent Aug. 28, 2007 Sheet 6 0f 7 US 7,263,462 B2

READY TO BEGIN 601


MACHINE
LEARNING
602

Application 400 is activated


603
Determine if any learning elements /
need to be preloaded
If yes — Continue with next step
If no — Continue with step 605 604

Load machine learning elements 465

Determine if application 400 uses


learners
\\\
/
605

If yes — Continue at next step


If no — Continue at step 607
606
/
Couple learners 465 to application 400 607
l
Update the AI engines 470 in the /
learners 465

Learners 465 receive queries for


608
predictions, actions, rankings,
determinations, selections, reasons,
and/or other information from code
410 of the ap alication 400 609

AI engines 470 of the learners 465 /


access relevant derived features 460
based on the received queries 610

A response to the query is sent to the /


querying code module, section,
function, 'object or the like of code
410

Fig. 6
U.S. Patent Aug. 28, 2007 Sheet 7 0f 7 US 7,263,462 B2

SUPPLIERS
m

MODULES AND TEMPLATES


lQi

m
E

APPLICATIONS

END USERS
m

Fig. 7
US 7,263,462 B2
1 2
NON-DISRUPTIVE EMBEDDING OF Current approaches to providing specialiZed elements (for
SPECIALIZED ELEMENTS example, embedded packages such as those for statistical
analysis) at runtime generally fall into two categories. (a)
CROSS REFERENCE TO RELATED Supply very widely applicable specialiZed elements, but
APPLICATION require the client (that is, a developer writing the code for
use by an end user) to identify all relevant features and cast
This application claims priority from US. Provisional them into a pre-de?ned format at runtime. (b) Supply very
Patent Application No. 60/592,980, titled “Battle?eld Leam narrowly applicable specialiZed elements that have all fea
ing”, ?led Jul. 30, 2004, in the name of the same invention, tures pre-de?ned, but that are only applicable to a speci?c
Express Mail Mailing No. ED 061 458 126 US. application. Each of these approaches has various draw
backs.
BACKGROUND OF THE INVENTION If the specialiZed elements are widely applicable, the
client generally must learn and utiliZe extensive expertise in
1. Field of the Invention order to tie the elements into the application. This process
The invention relates to embedding specialiZed elements, can be problematic, especially if the client does not under
for example statistical analysis or machine learning tech stand which features are important for proper function of the
niques, into application programs in a relatively non-disrup specialiZed elements. Furthermore, even if the client does
tive and ef?cient manner. understand which features need to be provided, the client
2. Related Art might not know or understand details of exactly how those
It is often problematic to attempt to embed expert knowl 20 features should be provided, or how those features should be
edge about a specialiZed domain into an application pro provided for optimum effect.
gram. In the known art, either The supplier of the specialiZed elements can assist the
The expert knowledge is supplied in a very general form, client with these matters. However, the supplier might need
such as for example a library of callable functions. access to the client’s application source code in order to
While this allows developers of many different appli provide useful assistance. This can be unacceptable if the
cation programs to use a generic library, this technique client wants or needs to keep its application source code
involves a substantial amount of information by devel secret, such as for example to protect trade secrets and other
opers about the expert knowledge and how to apply it. intellectual property embodied in the source code.
The expert knowledge is supplied in a very speci?c form, Finally, any changes to application program code can
30 necessitate changes to how the specialiZed elements are tied
such as for example custom program or system written
for use by the application program. While this allows into the application. As a result, the client might need
the developer of the application program to use that assistance from the supplier throughout the entire coding
expert knowledge, this technique involves a substantial process. Such assistance can be very time consuming, and
amount of information by the creator of the custom therefore expensive, especially if it must be provided to the
35
program or system about how the expert knowledge very end (sometimes called the “last mile”) of the coding
will be applied to the application program. process.
Neither of these techniques is fully satisfactory, as either For at least these reasons, conventional widely applicably
they involve having the developer of the application pro specialiZed elements can be overly expensive for the devel
gram learn a substantial amount of information they might oper, especially in domains requiring specialiZed statistical
40
not have time to fully learn and understand, or they involve analysis.
having the developer of the custom program or system learn With very narrowly applicable specialiZed elements, the
a substantial amount of information about the application process of tying the elements to a particular application can
program. Both of these problems have the drawback that be simpler. However, such specialiZed elements will only be
they increase the expense, in terms of effort, money, time, 45
useful with the particular application for which they are
and trust between developers. speci?cally designed. Every time similar elements are
Accordingly, it would be desirable to provide techniques needed for another application, they will have to be re
by which application developers can make easy use of written or the old elements will have to be extensively
specialiZed elements provided by expert knowledge provid modi?ed, even if their general operation and use is the same
ers, with a minimum of cross-domain knowledge required, as previous implementations. This is not an ef?cient devel
50
while still maintaining broad applicability of the specialiZed opment process.
elements, thus avoiding drawbacks of the known art. The foregoing issues particularly arise in, but are not
Many different computer program applications could ben limited to, the contexts of machine learning, statistical
e?t from embedding specialiZed program elements that analysis, and OLAP (online analytical processing).
enable use of specialiZed knowledge, including statistical 55 For example, game and simulation developers are often
analysis, data mining, machine learning, OLAP (online experts at creating graphics, environments, player and non
analytical processing), and the like. Conventional integra player characters, simple arti?cial intelligences, and the like.
tion of such specialiZed elements into application programs However, they often have only limited experience in the
generally takes one of two forms. application of more complex machine learning to software
First, the specialiZed elements could be applied at devel 60 agents that control the game’s or simulation’s characters.
opment time or “o?line.” This approach is limited in that the Likewise, developers of ?nancial application software are
specialiZed elements cannot learn from or otherwise adapt at often experts at calculations involving ?nancial transactions,
runtime. graphics and conventions for depicting those transactions,
Second, the specialiZed elements could be applied at and the like. However, they often have only limited expe
runtime or “online.” One major bene?t of this approach is 65 rience in the application of machine learning to analysis of
that the elements can adapt and personaliZe to an individual ?nancial trends and likely actions of actors in a market
user. place.
US 7,263,462 B2
3 4
In both of these examples, the developers might turn to Those skilled in the art of applying specialiZed elements
outside suppliers for specialized elements than enable such (such as for example, statistical methods and machine leam
machine learning. When the developers attempt to incorpo ing techniques) to data have crucial experience, techniques
rate those elements into their applications, they will encoun and methods for selecting relevant data and excluding
ter the issues discussed above. irrelevant data. The also use, are aware of, and have expe
rience in a great many techniques and methods for massag
SUMMARY OF THE INVENTION ing and processing data so they can maximiZe the effective
ness of different statistical techniques. Effective use of this
The invention provides techniques, including methods knowledge can make the difference between success and
and systems, that provide for integration of specialiZed failure of those specialiZed elements. Those not skilled in the
elements (such as for example, machine learning and sta
art of applying those specialiZed elements often lack expe
tistical methods) into application programs, without having rience and an in-depth knowledge of how the underlying
either the developers of the application programs or the
algorithms work. They are often unaware of what input data
specialiZed elements have to know much about the system
is even relevant when trying to apply particular specialiZed
they are being ?tted into.
elements (such as for example, particular statistical methods
In one embodiment, both the application programs and
or machine learning techniques). Their lack of in-depth
the specialiZed elements conform to a known ontology (i.e.,
knowledge and experience means that they are also often
a model of a set of data, a model of techniques for operating
unaware of the necessary transformations of their data that
on that data, and a model of a set of semantic meanings for
they need to perform, and are thus unable to make effective
those techniques. For example, in one embodiment, the 20
use of specialiZed elements that would otherwise be pow
known ontology might include a computer game including erful and useful for their business.
melee combat, where the melee combat might include either
player characters or non-player characters. The invention addresses these issues through a system and
At a development time, the application program and the methodology, which (1) restricts specialiZed elements, such
specialiZed elements (such as for example, machine learning 25
as for example statistical methods and machine learning
or statistical methods) are bound together using an applica techniques, to a particular problem within a particular
tion program/specialized element interface, which more domain of data analysis or processing; and (2) provides
speci?cally de?nes the possible ways in which the applica con?gurable data that permits the specialiZed elements to be
tion program might interact with the specialiZed elements. tailored to a particular application program. One advantage
This has the effect that the application program need not 30
of item 1 is that those not skilled in the art of applying those
have substantial knowledge of the specialiZed elements, nor specialiZed elements can still effectively apply those spe
that the specialized elements have substantial knowledge of cialiZed elements to their business. This is possible because
the application program, so long as both substantially con those skilled in the art of applying statistical methods can
form to the agreed ontology. incorporate, in advance, knowledge about those specialiZed
In one embodiment, the developer of the application 35
elements, and can incorporate, in advance, transformations
program provides a set of program header ?les, from which and representations of the data as deemed necessary to make
an embodiment of the invention can create the application those can incorporate, in advance, effective tools for solving
program/specialized element interface. In such embodi their speci?c problem. One advantage of item 2 is that those
ments, the specialiZed elements might apply substantial skilled in the art of applying those specialiZed elements can
internal knowledge about the agreed ontology to provide a 40
provide prepackaged solutions that work for a wide variety
rich set of statistical techniques and machine learning tech of applications within the relevant domain. Without item 2
niques, with very little information necessarily exchanged it would only be possible for those skilled in the art of
between the two. applying those specialiZed elements to supply prepackaged
solutions for one speci?c application, or at most a small
The success of applying specialiZed elements (such as for
example, statistical methods and machine learning tech 45
class of applications that were nearly identical. Taken
niques) to an application program depends critically on the together, these two aspects of the invention enable an
amount, quality, content and nature of the input data the entirely new business model for the supplier of those spe
statistical methods and machine learning techniques obtain cialiZed elements.
from the application program. For example, in the science of In the preferred embodiment of the invention, the inven
meteorology the task of predicting future weather patterns 50 tors have discovered a set of transformations of basic
usually requires access to a large amount of accurate data information about a game world in a video game that is
that records past weather patterns. The content of the data is effective in games that involve melee combat. In particular,
important in that it must include as much information as the transformations have proved effective in applying a set
possible that is relevant to making accurate predictions. It of specialiZed elements (such as for example, statistical
should also exclude as much extraneous and irrelevant 55 techniques involved in statistical machine learning) to the
information as possible since this information might other problem of a non-player character (NPC) learning, in real
wise overwhelm or confuse the statistical methods used. The time, to play by observing a character controlled by a
nature of the past data is important in the sense that human.
predictions may be facilitated by transforming the data in This application refers to basic information about the
some way before applying the statistical method. For 60 game world as the game’s “raw features” and to information
example, instead of providing raw temperature values as that is the result of the inventive transformations of those
input some statistical methods work better if the data is ?rst raw features as the “derived features”. The inventors have
transformed into more discrete values such as “hot”, “warm” discovered that the derived features comprise 90-99% of the
or “cold”. Other specialiZed elements may prefer yet differ information that is required to learn effectively. By packag
ent types of data, such as data that has been processed to 65 ing up the derived features and the specialiZed elements, the
extract its principal components (sometimes referred to inventors have created a module that they refer to as the
herein as “PCA”). “battle?eld learning module.”
US 7,263,462 B2
5 6
Furthermore, the inventors have discovered that by add Process OvervieW
ing a system or methodology for con?gurable data, (as In the preferred embodiment, the invention is used by a
described With respect to item 2 above) the invention alloWs supplier to encapsulate the supplier’s specialiZed elements
game developers to specify their oWn set of raW features. (such as for example, statistical processing algorithms and
The module can therefore apply to many different games that knoWledge of a domain) in What the inventors refer to as a
fall Within the melee combat genre. One advantage thereof “module”. A module is designed to be used by a developer
is that game developers, Who are not typically skilled in the to incorporate those specialiZed elements into their applica
art of applying the provided specialiZed elements, can more tion. A module may consist of various distinct components
effectively use those specialiZed elements Within their game including, but not limited to, a runtime library for statistical
products. Note that, this level of con?gurability is com processing of data, con?gurable data, applications for con
pletely different and far beyond the usual trivial amount of ?guring the con?gurable data, example con?gurations,
con?gurability that most softWare provides during the instal example applications, and documentation. Different compo
lation process (eg When softWare is installed the user is nents are designed to be used in various operations that
often alloWed to pick the install directory, choose some ?le occur at tWo different times: development time (“devtime”)
locations, etc.). Moreover, the inventors have discovered and runtime. In particular, the con?gurable data and the
that the data con?guration process can be made simple applications for con?guring the con?gurable data are
enough that the supplier of the specialiZed elements does not designed to be used at devtime. For one example, the
need to be involved in the process of ?tting it to the client’s runtime library for statistical processing of data is designed
game. This is because all the required con?guration is Within to be used at runtime.
the context of the application domain of the module and thus 20
In a preferred embodiment, at devtime the developer must
uses concepts that are familiar to the client. That is, the client
provide a set of raW feature de?nition (RFD) ?les, e?fect ?les
only needs to be an expert in the application domain and the and parameter ?les, as described beloW. The ?les are read by
client’s oWn application; the client does not need to be an
a devtime application, called the “featuriZer,” Which com
expert in the use of the provided specialiZed elements. piles them into a set of derived features that the inventors
In addition to video games, the invention also applies to 25
refer to as the “cooked features”. At runtime the cooked
many other applications that involve components that Would features are read in by the runtime library in order to
bene?t from the provided specialiZed elements. For customiZe the runtime library to the particular application to
example, the invention could be used to create modules for Which it is linked. More speci?cally, the derived features that
various real-time applications such as: comprise the cooked features are instantiated in memory and
A module that could be con?gured by the air force to 30
hooked up to the raW features that are computed by the
create softWare for the operation of unmanned drones application.
that learn in real-time from a human pilot in a real
Those skilled in the art Would have little dif?culty in
battle?eld situation.
seeing hoW the cooked features could be represented di?fer
A module could be created that could be con?gured by ently. For example, a relational database could be used. With
stock brokers to be used in ?nancial applications that 35
some minor modi?cations it is also possible to represent the
adapt in real-time to changing market conditions. cooked features as code that is generated by the featuriZer
A module could be created that is designed to be con?g application. In Which case the generated code may have to
ured by medical practitioners for various medical appli be compiled at devtime so that it could be linked in With
cations in Which some apparatus or equipment must application and runtime library. This may lead to some speed
adapt to changing conditions in real-time. 40
advantages in evaluating the derived features at runtime.
The invention also applies to non real-time statistical data Note that, if the code Was in an interpreted language (e.g.
processing applications such as OLAP (online analytical Python), or if there Was a compiler embedded Within the
processing). In traditional OLAP style applications of sta application, then there Would be no need to compile the
tistical methods for data processing, the supplier of the generated code in advance at devtime.
specialiZed elements (i.e., those including the statistical Note that during the developer’s overall development
methods) does not Write any of the features. Instead all the process devtime and runtime are interleaved. That is, the
features are Written by the client. This is in marked contrast developer Will run their application to test the behavior of
to the case that occurs When using the invention. That is, their application With the supplier’s runtime library and the
When using the invention the bulk of the features are Written initial cooked features. In early attempts, the behavior is
50
by the supplier. This difference in “ownership” of the unlikely to be correct. The errors could be caused by, among
features is a major difference betWeen the invention and any other possibilities, bugs in the application, errors in com
knoWn art.
puting the raW features, or errors or oversights in the
Of course, in traditional applications the supplier and the con?guration process. The developer Will therefore engage
client can be, and often are, one in the same. In such cases, in an iterative process of recon?guring the con?gurable data,
55
an opportunity to sell the specialiZed elements and the generating a neW cooked features and re-testing their appli
features together as a package to a third party only exists if cation.
the third party’s application is ostensibly identical. Once the developer is happy With the behavior of their
The invention also applies When the specialiZed elements application and the interaction With the runtime library, the
are
60 developer Will ship their application to their users. For
(l) embodied in a softWare package that can be con?gured, example, the developer might be the developer of a com
(2) embodied in a hardWare device that can be con?gured, puter game that uses the battle?eld learning module to create
(3) embodied in a device that is a combination or hybrid of characters that can learn by example. The ultimate users of
softWare and hardWare, or the application are people in their homes playing the game
(4) embodied in a plurality of devices operating in conjunc 65 that, for example, they bought in a shop (or alternatively,
tion or cooperation, such as for example a cluster proces people playing the game at an arcade). The users at home are
sor. using the battle?eld learning module in runtime mode only
US 7,263,462 B2
7 8
and so the only components of the module that need ship done With effect ?les. Each e?fect ?le instantiates a related
With the game are the runtime library and the ?nal cooked collection of behaviors. For example, an effect ?le could
features. contain behaviors related to movement. An individual
Later, if the developer Wishes to ?x bugs that Were not behavior is usually parameteriZed and represents the poten
?xed earlier, or to add neW functionality to the game, a neW tial to learn a speci?c behavior With respect to the supplied
cooked features and (if necessary) a neW runtime library, parameters. For example, a behavior could be de?ned to
could be made available for the user to doWnload or pur potentially learn to run aWay from a particular target When
chase as an upgrade or patch. a certain condition is true.
Creating a neW behavior that an NPC could potentially
Extra Details on the Preferred Embodiment: Devtime learn consists of supplying values for the behavior’s param
In a preferred embodiment, con?guring the con?gurable eters. The inventors call it instantiating a behavior. The exact
data consists of tWo parts. The ?rst part is concerned With set of parameters can vary depending on the effect. The
making sure the required raW features are correctly and inventors have discovered that a common set of parameters
ef?ciently linked in to the application. The second part is is a target and a condition. When the developer instantiates
concerned With alloWing the developer to extend the raW a behavior they provide actual values for the the condition
features, and What and hoW effects should be instantiated in and target. In this Way a developer can create an effect to, for
their application. example, to potentially learn to run aWay from green orcs
When the character is frightened. Or another e?fect, say, to
In a preferred embodiment, hooking up the raW features learn to run toWard blue ?oWers When there are a large
is largely achieved using What the inventors refer to as raW 20 number of dragons circling overhead. The options are lim
feature de?nition (RFD) ?les. In particular, an RFD ?le is a itless and again shoW hoW ?exible the invention is in
regular C header ?le that is used to specify the raW features. alloWing a single module to apply to a huge number of
An initial RFD ?le is supplied to the developer as part of possible applications.
the module. The RFD ?le can also include other RFD ?les Technically, the parameter values supplied by the devel
and other C header ?les initially supplied as part of the 25 oper have to be features. For example, they can be raW
module. The other C header ?les and portions of the RFD features created from the RFD ?les. But to alloW greater
?les must remain ?xed. They represent data structures that ?exibility, convenience and customiZability there is also a
the supplier requires to be present for the subsequent correct special parameter ?le that provides a place Where the devel
functioning of the runtime library. The developer can hoW oper can de?ne their oWn derived features that represent
ever extend RFD ?les With their oWn data-structures. These 30 important concepts in their application. Important concepts
additional data-structures Will be correctly handled by the for each application Will be different but they typically
featuriZer application, and corresponding raW features cre include predicates, targets, iterators, etc. that are relevant to
ated. More speci?cally, the featuriZer records inside the the application. For example, in a certain game green orcs
cooked feature object the o?fsets in bytes needed to access With yelloW noses maybe an important aspect of the game.
the different ?elds inside the RFD ?les. 35 In another the list of all game green spaceships With large
The ability for the developer to add its oWn data-struc missiles may be important.
tures to the RFD ?le is part of What alloWs the module to be Behaviors are represented as template ?les. A template
able to be used in more than one speci?c predetermined ?le de?nes a set of derived features in terms of some
application. Rather, it can be used in any application in the parameters (eg an unspeci?ed condition and target). The
correct domain ontology. 40 derived features in a template can compute various functions
The idea behind RFD ?les is that When the application is of raW features, parameters and other derived features. The
compiled it is compiled With the RFD ?les. At runtime the derived features can be simple transformations of raW fea
values in the data-structures are ?lled in With important tures, such as computing relative coordinates from global
information about the application. For example, in a game ones. Or they can be de?ned recursively to perform sophis
the information Will contain basic information about char 45 ticated statistical functions of other derived features such as
acter’s positions and orientations, etc. The big advantage of machine learning. The derived features can reference other
using RFD ?les is that the data-structures in the RFD ?le can derived features de?ned elseWhere in the ?le, de?ned in
be one and the same as the applications internal data other template ?les, de?ned inside the runtime library, or
structures. For example, in a game a character’s position de?ned in the parameter ?le.
data-structure can be used both by the statistical processing 50 The details of hoW a template or parameter ?le is repre
algorithms inside the runtime library and independently in sented is not particularly important. The inventors happen to
the rest of the program, for instance, for rendering a depic used text ?les, but relational databases or code could equally
tion of the game World. This means that there does not have Well be used. It Would also be obvious to anyone skilled in
to be an additional potentially time-consuming step in Which the art of Writing softWare that a GUI, or con?guration
data is copied or marshaled from the applications oWn 55 “Wizard” could be trivially Wrapped around the Whole
internal data-structures into those used by the runtime process.
library. The RFD ?les therefore represent a method to gain The invention addresses draWbacks of the knoWn art With
added ef?ciency. If this added ef?ciency is not important a a system that includes at least (1) specialiZed elements that
more traditional API that relies on copying data can be used are restricted to a particular domain of data analysis or
instead. Those skilled in the art Would recogniZe that the use 60 processing and (2) con?gurable data that permits the spe
of the RFD ?les is an optional extra device to increase cialiZed elements to be tailored to a particular application.
ef?ciency and that altematives exist that do not alter the The con?gurable data expands applicability of the special
fundamental nature of the invention. iZed elements to plural applications Within the particular
domain.
E?fect Files 65 The specialiZed elements can be provided by a supplier to
In the preferred embodiment, deciding What and hoW a developer Without the supplier having detailed knoWledge
effects should be instantiated in an application is primarily of structures and internal operations used by the particular
US 7,263,462 B2
10
application. The particular application can be generated by specialiZed elements based on the data, and to use the
the developer Without the developer having detailed knoWl models to respond to the queries from the particular appli
edge of internal operations used by the specialized elements. cation.
By virtue of constriction to a particular domain and The invention also encompasses methods performed in
expansion Within that domain, this runtime approach pro accordance With the foregoing description, computer pro
vides a middle ground betWeen overly-broad and overly grams and code that implement those methods, data struc
narroW specialiZed elements. tures used by those programs and code, and media that stores
The particular domain can be a particular form of game, such programs, code and data structures. Other embodi
simulation, or analysis program. Examples include, but are ments are possible.
not limited to battle?eld games, simulations, and analysis After reading this application, those skilled in the art
programs, and ?nancial games, simulations, and analysis Would recogniZe that the systems described herein provide
programs. The specialiZed elements can enable statistical an enabling technology, With the effect that heretofore
analysis, data mining, machine learning, online learning, or advantageous features can be provided that heretofore Were
online analytical processing in the particular domain. Other substantially infeasible.
domains and types of specialiZed elements can also bene?t
from the approach of the invention. BRIEF DESCRIPTION OF THE FIGURES
The con?gurable data, once con?gured, provides a link
betWeen the particular application and the specialiZed ele FIG. 1 shoWs a conceptual overvieW of several principals
ments Within the domain. In a preferred embodiment, the underlying the invention.
con?gurable data includes templates provided by the sup 20 FIG. 2 shoWs a Work How and elements for embedding
plier. These templates can be for one or more header ?les specialiZed elements in an application.
and/or parameters for the specialiZed elements. FIG. 3 shoWs a ?oWchart of embedding specialiZed ele
The header ?les can de?ne structures for features used by ments in an application.
the application Whereby the specialiZed elements can access FIG. 4 shoWs a block diagram of an example of a system
those features. The parameters can specify predicates and 25 in Which machine learning has been embedded.
targets for the specialiZed elements Whereby the specialiZed FIG. 5 shoWs a block diagram of an example of embedded
elements can respond to queries from the particular appli machine learning.
cation. Other types of header ?les, parameters, and templates FIG. 6 shoWs a process How diagram of a method of
can be used Without departing from the invention. operating in a system in Which machine learning has been
In terms of “of?ine” versus “online” or “runtime,” the 30 embedded.
invention is a modi?ed runtime approach. The invention’s FIG. 7 shoWs a conceptual relationship betWeen suppliers,
approach actually involves operations that occur at tWo clients and end-users according to the invention.
different times: development time (“devtime”) and runtime.
The con?gurable data is con?gured by the developer at DETAILED DESCRIPTION OF A PREFERRED
devtime to provide the link betWeen the particular applica 35 EMBODIMENT
tion and the specialiZed elements. These devtime operations
involve identifying, constructing, and inserting all features Preferred embodiments of the invention are described
(i.e., value, groups of values, data constructs, and the like) herein, including preferred device coupling, device func
needed by the specialiZed elements into a pre-de?ned for tionality, and process steps. After reading this application,
mat. The resulting information about the features can be 40 those skilled in the art Would realiZe that embodiments of the
stored in various Ways, for example as a ?at ?le, computa invention might be implemented using a variety of other
tional graph, or relational database. techniques not speci?cally described herein, Without undue
At runtime, the link provided by the con?gurable data is experimentation or further invention, and that such other
used to enable the specialiZed elements to respond to queries techniques Would be Within the scope and spirit of the
from the particular application. In particular, the specialiZed 45 invention.
elements preferably use the stored con?gurable data to
access features in the developer’s code in order to perform Incorporated Disclosures
some form of statistical analysis, data mining, machine
learning, or the like. The embodiments described herein can be used in con
Different techniques can be used to con?gure the data for 50 junction With embodiments described in the folloWing docu
the link betWeen the specialiZed elements and the applica ments:
tion. For example, the data can be con?gured through US. Provisional Patent Application No. 60/592,980, titled
manual editing or through an input interface provided by the “Battle?eld Learning”, ?led Jul. 30, 2004, in the name
supplier along With the specialiZed elements. This interface of the same inventors, Express Mail Mailing No. ED
can include a graphical user interface. Other techniques to 061 458 126 US.
con?gure the data can be used. US. patent application Ser. No. 10/885,495, titled “Real
Once the data is con?gured, a featuriZer provided by the Time Context Learning by SoftWare Agents”, ?led Jul.
supplier is run at devtime to create a linkable library that 6, 2004, in the name of inventors John Funge, Ron
implements the specialiZed elements. The resulting linkable Musick, Daniel Dobson, Nigel Dulfy, Michael
library is accessible by the particular application in accor 60 McNally, Xiaoyuan Tu, Ian Wright, Wei Yen, and Brian
dance With the con?gurable data. In a preferred embodi Cabral, Express Mail Mailing No. EL 768 963 050 US.
ment, the featuriZer analyZes the con?gurable data to ensure “IKUNI BATTLEFIELD LEARNING USER
proper dependencies betWeen identi?ed features and param MANUAL” (unpublished), iKuni Corporation (Jul. 1,
eters. 2004).
After the library has been generated, the particular appli 65 These documents are sometimes referred to herein as the
cation can link to and use the library to marshal data from Incorporated Disclosure, hereby incorporated by reference
the particular application, to modify models used by the as if fully set forth herein.
US 7,263,462 B2
11 12
De?nitions Parties Involved in Use of Specialized Elements
The general meaning of each of these terms is intended to The system of the invention generally involves three
be illustrative and in no Way limiting. distinct groups of people: supplier(s) 100, client(s) 101, and
The phrase “specialized elements” refers to data driven end user(s) 102. (Throughout this document, the singular of
analytic tools, techniques, methods and code, for a noun is meant to encompass the plural and vice versa. For
example but not limited to statistical analysis, data example, “supplier” encompasses both a single supplier and
mining, machine learning, online learning, and online a group of suppliers. The singular Will generally be used
analytical processing (OLAP). hereinafter for the sake of convenience.)
The phrases “machine learning,” “arti?cial intelligence,” The supplier provides specialized elements to the client.
and the like interchangeably refer to processes and 10 The specialized elements enable some form of statistical
techniques by Which computers or other devices emu analysis, data mining, machine learning, online learning, or
late learning and learned behavior, for example to online analytical processing for an application created by the
emulate or to predict actions of humans or other actors. client. The specialized elements can be embodied as mod
(Technically, machine learning is a subset of arti?cial ules and templates, shoWn in FIG. 1 as modules and tem
intelligence; hoWever, the terms are generally used in a plates 105, or in some other form.
broader and more interchangeable sense in this appli The client con?gures the specialized elements and devel
cation.) ops some type of application that can bene?t from the
The phrases “online learning” and “online machine leam specialized elements.
ing” refer to real-time machine learning in Which The end user uses the application delivered by the client.
models are built and modi?ed “on the ?y” in real-time 20 From the end user’s perspective, the client is the developer
in immediate or near-immediate response to training of the application. (The client in the supplier/ client relation
signals and other inputs. The models are then used to ship is the same as the developer in the developer/end user
respond to real-time queries. Online learning is par relationship.)
ticularly useful in the contexts of games and simula These relationships are illustrated in FIG. 7.
tions Where immediate or near-immediate responses are 25
particularly important. Knowledge of Parties
The phrases “development time” and “devtime” refer to a The specialized elements according to the invention are
time period during Which a developer develops appli not provided by the supplier for use With a particular
cation code, including con?guration of that code for application. Rather, the specialized elements are provided
inclusion of specialized elements. 30 for use With a domain of applications. Therefore, the sup
The phrase “runtime” refers to a time period during Which plier is unlikely to have detailed knoWledge of structures and
application code that has embedded specialized ele internal operations used by a particular application.
ments executes. LikeWise, the client is likely to have only limited knoWl
The phrase “module” refers to specialized elements that edge of hoW the specialized elements perform their data
are utilized at runtime and the associated con?guration 35 analysis. The client might Wish to have their application
information de?ned at devtime. bene?t from analysis techniques that they understand in a
The phrase “supplier” refers to any people, businesses, or general sense but are not expert at developing. Thus, the
other entities, singularly or collectively, Who provide client relies on the expertise of the supplier, as embedded in
modules to others for incorporation into application or the specialized elements, to improve their application.
other code. 40 For example, game and simulation developers are often
The phrases “developer” refers to any people, businesses, experts at creating graphics, environments, player and non
or other entities, singularly or collectively, Who are player characters, simple arti?cial intelligence, and the like.
involved in designing, producing, developing, coding, HoWever, they often have only limited experience in the
and otherWise making application or other code. application of more complex machine learning to softWare
The phrase “client” refers to a developer Who receives 45 agents that control the game’s or simulation’s characters.
modules from a supplier and incorporates those spe Games and simulations can be greatly enhanced by such
cialized elements into application or other code. machine learning, especially online machine learning that
The phrase “developer supplied code” refers to code responds in realtime.
provided by one or more developers to enable some LikeWise, developers of ?nancial application softWare are
application, function, action, or use. 50 often experts at calculations involving ?nancial transactions,
The phrase “user” or “end user” refers to any people, graphics and conventions for depicting those transactions,
businesses, or other entities, singularly or collectively, and the like. HoWever, they often have only limited expe
Who use an application or other code designed, devel rience in the application of machine learning to analysis of
oped, coded, or otherWise made by a developer. ?nancial trends and likely actions of actors in a market
The phrase “raW features” refers to a subset of values and 55 place. Financial softWare can be greatly enhanced by such
structures used or generated by an application (i.e., machine learning.
“developer supplied code”) that the specialized ele In these and other contexts, the client relies on the
ments need to access, either directly or indirectly, in supplier to deliver the specialized elements and to make the
order to interact With that application. specialized elements relatively easy to embed in their appli
The phrase “derived features” refers to values, structures, 60 cation.
and functions used by specialized elements. Derived For at least these reasons, neither the supplier nor the
features can be derived based on one or more raW client can be expected to have detailed knoWledge of hoW
features and/or other derived features. the other party’s contribution to the application operates.
The scope and spirit of the invention is not limited to any Neither the supplier nor the client is usually interested in
of these de?nitions, or to speci?c examples mentioned 65 expending resources to gain such knoWledge. Furthermore,
therein, but is intended to include the most general concepts both parties might have a vested interest in keeping the
embodied by these and other terms. details of the operation of their oWn contributions con?den
US 7,263,462 B2
13 14
tial, for example if trade secret information is embedded Correspondences betWeen structures and operations used
therein. Thus, the variable names, operation names, and by the specialiZed elements and the application preferably
other structures used by the specialized elements are almost are de?ned through con?gurable data supplied With the
certainly going to differ from those used by the application. modules. This con?gurable data (after con?guration) is
shoWn in FIG. 1 as settings 107 and provides a link betWeen
Constriction and Expansion the specialiZed elements and the application Within the given
FIG. 1 illustrates the principals of constriction and expan domain.
sion utiliZed by the invention. In a preferred embodiment, the con?gurable data includes
Brie?y, the invention utiliZes a system that includes at templates for one or more header ?les and/ or parameters for
least (1) specialiZed elements that are restricted to a par the specialiZed elements. The header ?les can de?ne data
ticular domain of data analysis or processing and (2) con structures for features used by the application Whereby the
?gurable data that permits the specialiZed elements to be specialiZed elements can access those features. The param
tailored to a particular application. The con?gurable data eters can specify predicates and targets for the specialiZed
expands applicability of the specialiZed elements to plural elements Whereby the specialiZed elements can respond to
applications Within the particular domain. queries from the particular application. Other types of
As noted above, the specialiZed elements are provided for header ?les, parameters, templates, and con?gurable data
use With a domain of applications rather than With a single can be used Without departing from the invention.
application. According to the invention, this domain is By virtue of constriction to a particular domain and
constricted to a particular type of analysis for a particular expansion Within that domain, the invention provides a
type of application. This constriction is represented by 20 middle ground betWeen overly-broad and overly-narroW
region 110 in FIG. 1. specialiZed elements.
Examples of particular types of analysis include, but are As shoWn in the FIG. 1, constriction occurs as the
not limited to, statistical analysis, data mining, machine specialiZed elements are generated by a supplier. Tailoring
learning, online learning, and online analytical processing. of the specialiZed elements (i.e., expansion) through the
Example of particular types of applications include, but are 25 con?gurable data is performed by the client during “dev
not limited to, battle?eld games and simulations, ?ight time.”
games and simulations, ?ghting games and simulations, Devtime and Runtime
virtual reality games and simulations, ?nancial games and FIG. 1 also illustrates principals of devtime and runtime
simulations, and political games and simulations. according to the invention.
Constriction must be performed because the specialiZed 30
The con?gurable data is con?gured by the developer at
elements and the application program should share a com devtime 112 (Which corresponds to expansion 111). These
mon ontology (i.e., Way of looking at the World). devtime operations involve identifying, constructing, and
For example, any battle?eld game or simulation is likely inserting all features (i.e., value, groups of values, data
to share a common ontology With specialiZed elements constructs, and the like) needed by the specialiZed elements
designed to analyZe actions on a battle?eld. While speci?c into a pre-de?ned format. The resulting information about
details of structures and operations may differ, it Will be the features can be stored in various Ways, for example as a
possible to construct a correspondence betWeen structures ?at ?le, computational graph, relational database, or some
and operations used by each. other form.
In contrast, the ontology for a ?nancial simulation is The con?gured data, Which is shoWn in FIG. 1 as settings
40
entirely different from the ontology for a battle?eld game. 107, serves as a link betWeen devtime 112 and runtime 113.
Specialized elements for analyZing a ?nancial situation are At runtime 113, the link provided by the con?gured data
almost certainly inapplicable to providing effective analysis is used to enable the specialiZed elements to respond to
in a battle?eld setting. In almost every case, it Would be queries from the particular application. In particular, the
dif?cult if not impossible to draW useful correspondences specialiZed elements preferably use the stored con?gured
45
betWeen the tWo World vieWs. data to access features in the developer’s code in order to
Applicants note that exceptions can exist. For example, a perform some form of statistical analysis, data mining,
stock market could be analogiZed to a battle?eld, and machine learning, or the like. This process involves linking
correspondences could be generated based on that analogy. modules for the specialiZed elements to the application,
While the invention is applicable to such cases, the more marshalling data from the application, and using that data to
50
common case Will involve specialiZed elements and appli perform analysis and modeling.
cations that share a common ontology. Runtime 113 operations can be performed by both the
As long as the specialiZed elements and application share client (developer) and the end user. The client can perform
a common ontology, the general types of data and operations runtime operations in order to train the application, to debug
used by each Will have at least some degree of correlation. the application and the application’s link to the specialiZed
55
Some structures and operation Will have one-to-one corre elements, and the like. The user performs runtime operation
spondences betWeen the elements and the application. More in normal use of the application.
complex correspondences might be needed for other struc
tures and operations. FIG. 2 shoWs a Work How and elements for embedding
By draWing the proper correspondences Within the ontol 60 specialiZed elements in an application.
ogy, the specialiZed elements Will be able to be tailored to a Several elements in FIG. 2 are supplied by the supplier to
particular application. This ability to tailor the specialiZed the client (developer) in order to permit the client to incor
elements means that they can be used With a range of porate specialiZed elements into an application. These ele
applications Within their given domain. The applicability of ments include code for the specialiZed elements and con
the specialiZed elements to plural applications is referred to 65 ?gurable data, Which can be vieWed as an SDK.
as “expansion.” Such expansion is illustrated as region 111 The code for the specialiZed elements is preferably in a
in FIG. 1. compiled runtime library, shoWn in FIG. 2 as runtime library
US 7,263,462 B2
15 16
200. In the interest of preserving any proprietary informa cialiZed elements. This results in very efficient interaction
tion in the code, source code for the elements preferably is betWeen the application and the specialiZed elements, Which
not made available to the client. However, source code can can be very important in certain online applications such as
be provided if so desired. games and simulations.
The con?gurable data in FIG. 2 includes required structs HoWever, the client can also choose to use their oWn
210, additional structs 220, and parameters 230. These items names for features in the application. If the client uses their
preferably are provided in the form of templates that can be oWn names, the application Will have to marshal data into
edited by the client. values and structures With names that match the declared
In some embodiments, the client edits the structs and raW features so that the specialiZed elements can access that
parameters directly, for example using any programming data. Efficiency tends to be someWhat lessened by having to
tool or text editor. In other embodiments, input interface 240 marshal the data; hoWever, this approach still results in fairly
provided by the supplier is used to con?gure some or all of ef?cient operation.
the structs and parameters. The input interface can be a text As stated above, the con?gurable data in FIG. 2 also
based or graphical user interface (GUI). Other con?guration includes parameters 230. These parameters de?ne derived
techniques can be used Without departing from the teachings features 260 for the specialiZed elements. Derived features
of the invention. refer to values, structures, and functions used by the spe
Required structs 210 and additional structs 220 are con cialiZed elements to perform their analysis. Derived features
?gured by the client so as to de?ne raW features 250. RaW can be derived based on one or more raW features and/or
features are a subset of values and structures used or other derived features.
generated by an application that the specialiZed elements 20 In a preferred embodiment, the derived features include
need to access, either directly or indirectly, in order to predicates and targets.
interact With that application. The predicates are derived features that provide a context
In a preferred embodiment, required structs 210 are in the for data analysis. For example, in the context of a battle?eld
form of a header (.h) ?le. These structs represent a minimum simulation, some predicates might be a health of a character,
set of features that must be present for the specialiZed 25 a number of opposing characters present, distances to those
elements to function. Also in a preferred embodiment, characters, and the like.
additional structs 220 are in the form of an iKuni de?nitions The targets represent objects or items that can be the
(.ik) header ?le. These structs represent additional features subjects of queries and responses by the specialiZed ele
that are needed to permit the specialiZed elements to provide ments. For example, in the context of a battle?eld simula
added functionality to the application. 30
tion, a target might be a player character about Whom the
The .h and .ik header ?les preferably include declarations application might ask the specialiZed elements to make a
of data types, for example C/C++ declarations. They pref prediction.
erably do not include any logic. The header ?les can include
The parameters can de?ne additional functions or fea
special annotations to assist in later processing. For tures. For example, the parameters can de?ne debugging
example, a $ delimiter can be used to provide an annotation 35
functions for use during runtime.
about a variable, as shoWn for example beloW:
Parameter de?nitions can involve values for thresholds to
be used by a specialiZed element, names of and/or pointers
to variables, arrays, functions, and other data structures
typedef struct Info
40
corresponding to information used or generated by an appli
{ cation (i.e., raW features), expressions involving values,
?oat position[2];
?oat value [2];
names of and/or pointers to variables, arrays, functions, and
int status; other data structures. In a preferred embodiment, the param
int color; // $ ?rm $ eter de?nitions are expressed in a feature speci?cation
// etc.
45
language (FSL). An example of a FSL is described in depth
in the incorporated provisional application.
The parameter de?nitions preferably form a computa
In this example, the annotation Within “.5 . . . “.5 indicates tional graph. Alternatively, the derived features can be
that “color” is a “?rm” variable. Firm variables are only embodied in a ?at ?le of de?nitions, a relationship database,
evaluated once at runtime and are considered to be constants 50 or in some other form.
thereafter. Some other possible annotations and possible As discussed above, the con?gured structs and parameters
meanings are listed beloW: form settings that bridge the devtime and runtime aspects of
const: a const feature never alters its value the invention. These settings create a link through Which the
variable: a variable feature can vary betWeen queries, but application and the specialiZed elements can communicate
never during a query 55 data Within their shared ontology.
volatile: a volatile feature can alter its value at any time The features are instantiated 270 from their de?nitions
The invention is not limited to these annotations or to before being passed to featuriZer 280. Instantiation prefer
these particular de?nitions for the annotations. ably involves checking the features for proper dependencies.
Because raW features 250 include variable declarations In addition, instantiation involves expanding the de?nitions
for values and structures used or generated by the applica 60 for all instances of de?ned features.
tion, the header ?les (or other embodiment of the raW feature FeaturiZer 280 operates on the instantiated features to
de?nitions) are supplied for compiling the application. This generate models or other resources 285. These resources are
is represented by the diagonal arroW labeled “raW features” used by the specialiZed elements to analyZe data, to be able
in FIG. 2. to ansWer queries framed in terms of predicates and targets
The client can use the names of the declared raW features 65 (i.e., derived features). In a preferred embodiment, these
for features in their application. If those names are used, the models or other resources are similar to art or map resource
raW features Will be directly available for use by the spe ?les.
US 7,263,462 B2
17 18
Compiled code 290 for the application that includes calls In step 310, the end user executes the application. For
to runtime library 200 are linked to the library and resources example, if the application is a game for a game counsel, the
285, after Which the application can be executed 295 for use. end user plays the game. Training might continue or might
FIG. 2 includes an annotation that instantiation, featur be froZen, depending on hoW the application is designed and
iZation and execution can occur during both development possibly on choices and inputs from the end user.
and use. During development, execution can be used for
debugging. In addition, resources 285 can be modi?ed Runtime Example
during development through execution of the application, FIG. 4 shoWs a block diagram of an example of a system
for example in the context of training for machine learning. in Which machine learning has been embedded. The inven
The modi?ed resources can be stored for later shipment tion is equally applicable to other types of specialiZed
along With the application to an end user. elements that implement different techniques of data analy
If learning is to continue, resources 285 can continue to be sis. Application of the invention to those techniques Would
modi?ed during use by an end user. Alternatively, some or not require undue experimentation or further invention.
all of the resources could be froZen so as to freeZe the data In this example, the specialiZed elements enable machine
analysis, machine learning, or other models. learning in an application that is ready for training and
FIG. 3 shoWs a ?owchart of embedding specialiZed ele debugging by a developer or use by an end user.
ments in an application. An application 400 running on a system 405 includes
Amethod 300 is performed using the Work?oW shoWn in developer supplied code 410. The code preferably includes
FIG. 2. Although the method 300 is described serially, the program structures such as data structures, data types, func
How points and steps of the method 300 can be performed 20 tion entry points, function pointers, object data types, object
by separate elements in conjunction or in parallel, Whether methods, and the like. Some, all, none or different structure
asynchronously or synchronously, in a pipelined manner, or might be present depending on the Way in Which the code
otherWise. There is no particular requirement that the 410 is designed.
method 300 must be performed in the same order in Which One or more users 420 typically interact With the appli
this description lists How points or steps, except Where 25 cation 400, although the invention is also applicable to
explicitly indicated. applications and code that does not interact With users.
In step 301, a client receives modules for specialiZed In one embodiment, described in more detail in the
elements, preferably including at least a runtime library and Incorporated Disclosure, the application is a game, for
con?gurable data, from a supplier. example a simulation or other game involving player and
30
Steps 302 to 305 represent devtime. non-player characters. The invention is equally applicable to
In steps 302 and 303, structs and parameters in the non-game and non-simulation applications.
con?gurable data are edited so as to identify raW features The code 410 includes state information 430. The state
and derived features (e.g., predicates and targets). The information can include, for example, variables, values,
parameters preferably are de?ned and edited in a functional arrays, objects (e.g., C++ objects), pointers, and/or other
35
speci?cation language (FSL). Editing can be manual or data structures that de?ne or store information used by the
through an input interface. application 400.
In step 304, the features are instantiated. Instantiation According to the invention, raW features 450 include
preferably involves checking the features for proper depen information from state information 430. The raW features
dencies. In addition, instantiation involves expanding the might include, Without limitation, the actual values, the data
40
de?nitions for all instances of de?ned features. structures that store those values, pointers to the values and
A featuriZer generates resources for the specialiZed ele data structures, functions and object methods capable of
ments based on the instantiated features in step 305. These determining the values and data structures, pointers to those
resources are used by the specialiZed elements to analyZe functions and object methods, and the like.
data so as to be able to ansWer queries framed in terms of
There might be a very great many raW features 450. The
predicates and targets (i.e., derived features). In a preferred
embodiment, these models or other resources are similar to
Incorporated Disclosure provides examples of raW features
in the setting of a game or simulation.
art or map resource ?les.
Steps 306 to 308 represent runtime. The derived features 460 include a set of features derived
The con?gured features, parameters and resources, Which in response to the raW features 450, such as for example by
50 calculating the values of those derived features 460 using the
together form settings for the specialiZed elements, form a
link betWeen the devtime steps and the runtime steps. values of the raW features 450.
In step 306, the application’s code, the runtime library for A derived feature 460 might include a Weighted sum of a
the specialiZed elements, and the resources are linked. The set of raW features 450, a function calculation in response to
linked code is executed in step 307. a set of raW features 450, and the like.
55
Training and debugging occur in step 308. In training, the A derived feature 460 might be determined using one or
resources can be modi?ed by the specialiZed elements “on more prede?ned calculations or operations performed on
the ?y.” These modi?cations can be kept, discarded, or one or more raW features, raW features and derived features,
modi?ed as desired. or both raW features and derived features.
Development of the application, embedding the special 60 A derived feature 460 might also or instead be determined
iZed elements, and training the elements is usually an using one or more learned or derived calculations or opera
iterative process. Thus, the client can go from step 308 to tions performed on one or more raW features, raW features
any of the previous steps. and derived features, or both raW features and derived
Once the client is satis?ed With the embedded specialiZe features.
elements and associated settings and resources, the entire 65 For example, not intended to be limiting in any Way, a
packed of linked code can be shipped to an end use. This is derived feature 460 might include one or more of the
shoWn as step 309. folloWing data:
US 7,263,462 B2
19 20
A derived feature 460 might include a Boolean value or a observable Markov decision process models, other simula
predicate operator, such as a determination Whether tion engines, etc. An example of a context-based learner is
some condition is true at the moment With regard to the described in detail in the Incorporated Disclosure.
application 400. Examples of queries 480 can include, for example and
A derived feature 460 might include a Boolean value or a Without limitation, requests for predictions, suggested
predicate operator de?ned in response to already actions, identi?cations of goals, rankings of goals, rankings
knoWn predicates. of factors, rankings of other objects or information, identi
A derived feature 460 might include an iterator de?ned in ?cations of relative or absolute probabilities, determinations
response to an array of already-knoWn raW features 450 of uncertainty, selections of What information is most/least
or derived features 460. critical, identi?cations of most/least common results over a
A derived feature 460 might include an element of an distribution of results, reasons for predicting actions or for
iterative operator by selecting one or more objects from other responses, and other information. Responses 490 can
that iterative operator. include, for example and Without limitation, the requested
A derived feature 460 might be de?ned in response to predictions, actions, identi?cations, rankings, determina
other raW features 450, other derived features 460, or tions, selections, reasons, and other information. Other types
recursively de?ned in response to a variant form of the of queries and responses can be used as desired.
same derived feature 460 (such as for example a sorted Training signals 510 provide information and feedback
version of an array or list). from code 410 to learners 465. The feedback could indicate
A derived feature 460 might be de?ned in response to a a result of taking action based on responses 490, a compari
machine learning elements (described below), With the 20 son of a prediction in responses 490 to What actually
effect that an output of a machine learning element occurred, and other training signals of types knoWn in the art
might be used as an input for de?ning a derived feature of machine learning.
460.
AI engines 470 of learners 465 preferably use the training
One aspect of the invention is the provision of a selected
signals to learn and adapt, thereby enhancing the operation
set of derived features needed for effective machine leam 25
of application 400. Learning could be con?ned to a learning
ing. The inventors have found that it is non-obvious and
or training mode during Which responses are not sent to code
unexpectedly useful to provide such a selected set of derived 410. Alternatively, learning could continue during an opera
features.
tional mode during Which responses are sent to code 410.
First, this has the effect of alloWing the code developer to
not have to think about Which derived features are 30 Storage
going to be derived from the raW features (or other The storage 520 includes a device for storing electronic
system state variables) of the application When design data including but not limited to a hard disk drive, an optical
ing or implementing that application. drive, a silicon chip storage element (smart media card,
Second, this has the effect of alloWing the code developer external storage card, random access memory). Code and
to not have to design any code or data structures for 35 data for the application 400 preferably can be saved to the
providing those derived features, and also alloWing the storage 520.
developer to not have to design any code or data
In one embodiment, data that is generated by the learners
structures for computing those derived features.
465 might be saved and loaded, either on demand, or in
Third, this has the effect of alloWing the code developer response to particular user inputs. This data might be used as
to not have to think about any learning aspects of the 40
to initiate AI engines 470. The data might include param
application, and to not have to design any code or data
structures therefore.
eters that de?ne a starting point for learning by the AI
engines, a current or prior state of learning by the AI
Fourth, this has the effect of alloWing the code developer
engines, or any other information regarding the learners 465
to call upon learners 465 provided by the invention to
and AI engines 470. The data might de?ne a pre-training or
ask for responses to queries that could bene?t from 45
post-training state for the learners and AI engines.
machine learning.
After reading this application, other and further advan Runtime Example
tages of providing a selected set of derived features Will be FIG. 5 shoWs a block diagram of an example of embedded
clear to those skilled in the art. Moreover, these other and specialiZed elements, in this case machine learning code.
further advantages Will be clear to be Within the scope and 50
The invention is not limited in any Way to the details of this
spirit of the invention, and not to involve any undue experi example.
mentation or further invention.
Learners 465 are capable of providing dynamic machine RaW features 450 are shoWn in FIG. 5 as including
learning to code 410 based on derived features 460. Learners various values and indications for code 410. A learner
465 are shoWn in FIG. 4 as including one or more arti?cial 55
according to the invention generates the derived features 460
intelligence (AI) engines 470 that respond to queries 480 from the raW features 450 and possibly from other derived
from code 410 With responses 490. features 460.
AI engines 470 embody machine learning techniques. In In the example shoWn in FIG. 5, the code is for a simulator
a preferred embodiment, one or more AI engines are capable such as a ?ight simulator. The various raW features 450
or learning from prior situations, for example as described relate to information about the ?ight simulation. The par
by derived features 460, and making predictions and/or ticular raW features shoWn in FIG. 5 are meant to be
suggestions based on such learning. illustrative only; actual code for a ?ight simulator might use
Examples of applicable machine learning techniques all, some, none, or different raW features.
include, but are not limited to, context-based learners, expo The derived features 460 in FIG. 5 represent relationships
nential gradient techniques based on Weighted sums of raW 65 betWeen some of raW features 450. Derived features 460
and/or derived features, Bayesian classi?ers, neural net according to the invention are not limited to such relation
Works, expert systems, hidden Markov models, partially ships. Furthermore, the particular relationships shoWn in
US 7,263,462 B2
21 22
FIG. 5 are meant to be illustrative only; actual derived At a step 608, the learners 465 receive queries for
features for a ?ight simulator might use all, some, none, or predictions, actions, identi?cations, rankings, determina
different derived features. tions, selections, reasons, and/or other information from
In order to generate the derived features, the learner must code 410 of the application 400.
knoW Where in the code 410 to ?nd the corresponding raW At a step 609, the AI engines 470 of the learners 465
features 450. The locations of or pointers to the raW features access relevant derived features 460 based on the received
are shoWn in FIG. 5 as access points 530. The access points queries. As discussed above, the derived features 460 are
preferably are extracted from the code based on con?gura based at least in part on raW features 450 in code 410. If the
tion information supplied by the code’s developer and based raW features 450 need to be access, learners 465 use access
on templates supplied for this purpose, as explained in more points 430 to do so.
detail above With reference to FIGS. 1 and 3. At a step 610, a response to the query is sent to the
The derived features 460 are supplied to AI engines 470, querying code module, section, function, object or the like
Where they are used to generate responses 490 to queries 480 of code 410.
from code 410. In FIG. 5, an example of queries 480 is In a training mode, less than all of these steps might be
shoWn as a query for What a next action should be, and an performed. For example, step 610 might be skipped in a
example of response 490 is that action. Any other types of training mode. Conversely, if the learners are considered to
queries and responses could be used. be fully trained, step 607 might be skipped. Other variations
The code 410 supplies training signals 510 to AI engines are possible.
470, Which use the signals to learn and to adapt according to Those of steps 607 to 610 that are performed preferably
the nature of the AI engines. 20 are repeatedly executed so as to facilitate learning by the
softWare agents. As raW features 450 and derived features
Operation at Runtime
460 change, learners 465 learn and adapt, permitting appli
FIG. 6 shoWs a process How diagram of a method of
cation 400 to bene?t from the machine learning expertise
operating in a system in Which machine learning has been
embodied in the derived features 460 and AI engines 470 of
embedded.
25 learners 465. This continues until the game ends in steps 611
A method 600 is performed by the application 400.
and 612.
Although the method 600 is described serially, the How
points and steps of the method 600 can be performed by Interrelation of Method Parts
separate elements in conjunction or in parallel, Whether After reading this application, those skilled in the art Will
asynchronously or synchronously, in a pipelined manner, or recogniZe that many variations are possible that Would be
otherWise. There is no particular requirement that the Workable, that such variations are Within the scope and sprit
method 600 must be performed in the same order in Which of the invention, and that such variations Would not require
this description lists How points or steps, except Where undue experimentation or further invention.
explicitly indicated. For example, not intended to be limiting in any Way, the
folloWing aspects of the method 600 Would be clear to those
Associating, Updating and Using Behavior Models 35
skilled in the art:
At a How point 601, the method 600 is ready to begin
Each of steps 607 to 610 can be, and preferably are,
utiliZing machine learning that is embedded in an applica
performed in parallel. This has the effect that the
tion as discussed herein.
method 600 can update the learners 465 concurrently
At a step 602, the application 400 is activated, and the With using those learners 465.
method 600 begins to operate in conjunction or combination 40
In the context of the invention, there is no particular
With the application 400.
requirement for learning to start and stop When the
At a step 603, the method 600 determines if any learning
elements or information for use by learning elements need to
application starts or stops. For example, leaming might
be conducted for only a short duration after the learners
be pre-loaded. If so, the method 600 performs the next step
start, or at pre-selected time durations, or at periodic
(the step 604), and continues With the step thereafter (the 45
time durations, or at time durations responsive to the
step 605). If not, the method 600 skips the next step (the step learners themselves.
604), and continues With the step thereafter (the step 605). In the context of the invention, it is possible for learning
At a step 604, the method 600 loads one or more machine
to be conducted in context at one or more levels of
learning elements 465, for example including AI engines generality.
470 and stored or pre-set settings for those engines. 50
The more the learners are used, the more they learn. This
At a step 605, the method 600 determines that the
can enhance overall application performance over time.
application 400 uses one or more learners 465. If so, the
Learners can be directed to learn based on activities of
method performs the next step (the step 606), and continues single actors, groups of actors, historical records of past acts
With the step thereafter (the step 607). If not, the method 600
by actors, etc. In this context, an “actor” can be a user,
skips the next step (the step 606), and continues With the step 55
another application or entity, or the like. Learning can be
thereafter (the step 607). collaborativeiattempting to get actors to Work more effec
The step 605 could include determining Which of plural
tively in concer‘t4or competitiveiattempting to defeat or
available learners are going to be used by the application
overcome one or more other actors.
400.
At a step 606, the method 600 couples one or more 60 Alternative Embodiments
learners 465 to application 400, as determined in the previ Although preferred embodiments are disclosed herein,
ous step (the step 605). many variations are possible Which remain Within the con
At a step 607, the method 600 updates the AI engines 470 cept, scope, and spirit of the invention. These variations
in the learners 465, for example based on training signals Would become clear to those skilled in the art after perusal
610 from code 410 of the application 400. The step of 65 of this application.
training could involve updating coe?icients, Weights, or After reading this application, those skilled in the art
other values used by the AI engines. Would recogniZe that the techniques described herein pro
US 7,263,462 B2
23 24
vide an enabling technology, With the effect that heretofore 8. A method including the steps of
advantageous features can be provided that heretofore Were using specialiZed elements that are restricted to a particu
substantially infeasible. Furthermore, those skilled in the art lar domain of data analysis or processing;
Will recognize that these alternative embodiments and varia con?guring con?gurable data that permits the specialiZed
tions are illustrative and are intended to be in no Way elements to be tailored to a particular application,
limiting. thereby expanding applicability of the specialiZed ele
The invention claimed is: ments to plural applications Within the particular
1. A system including domain; and
specialized elements that are restricted to a particular executing the particular application on a computing
domain of data analysis or processing; and device to generate a result;
con?gurable data that permits the specialiZed elements to Wherein
be tailored to a particular application, thereby expand
the con?gurable data is con?gured at devtime to provide
ing applicability of the specialiZed elements to plural the link betWeen the particular application and the
applications Within the particular domain;
Wherein specialiZed elements; and
the con?gurable data is con?gured at devtime to provide the link is used at runtime to enable the specialiZed
the link betWeen the particular application and the elements to respond to queries from the particular
specialiZed elements; and application.
the link is used at runtime to enable the specialiZed 9. A method as in claim 8, Wherein the con?gurable data
elements to respond to queries from the particular 20 is provided in one or more ?at ?les, computational graphs,
application. or relational databases generated or modi?ed at devtime and
2. A system as in claim 1, Wherein the con?gurable data accessed at runtime.
is provided in one or more ?at ?les, computational graphs, 10. A method as in claim 8, Wherein at least some of the
or relational databases generated or modi?ed at devtime and con?gurable data is con?gured through manual editing.
accessed at runtime. 25 11. A method as in claim 8, Wherein at least some of the
3. A system as in claim 1, Wherein at least some of the con?gurable data is con?gured through an input interface
con?gurable data is con?gured through manual editing. provided by the supplier along With the specialiZed ele
4. A system as in claim 1, Wherein at least some of the ments.
con?gurable data is con?gured through an input interface 12. A method as in claim 8, Wherein a featuriZer provided
provided by the supplier along With the specialiZed ele 30 by the supplier is run at devtime to create a linkable library
ments. that implements the specialiZed elements, With the linkable
5. A system as in claim 1, Wherein a featurizer provided library accessible by the particular application in accordance
by the supplier is run at devtime to create a linkable library With the con?gurable data.
that implements the specialiZed elements, With the linkable 13. A method as in claim 12, Wherein the featuriZer
library accessible by the particular application in accordance 35 analyZes dependencies in the con?gurable data.
With the con?gurable data. 14. A method as in claim 12, Wherein the particular
6. A system as in claim 5, Wherein the featuriZer analyZes application links to and uses the linkable library to perform
dependencies in the con?gurable data. at least one of
7. A system as in claim 5, Wherein the particular appli
cation links to and uses the linkable library to perform at 40
marshaling data from the particular application;
least one of modifying models used by the specialiZed elements in
marshaling data from the particular application; response to the data;
modifying models used by the specialiZed elements in using the models to respond to the queries from the
response to the data; particular application.
using the models to respond to the queries from the 45
particular application.

You might also like