WO2010047388A1 - 計算処理システム、プログラム作成方法、および、プログラム作成プログラム - Google Patents

計算処理システム、プログラム作成方法、および、プログラム作成プログラム Download PDF

Info

Publication number
WO2010047388A1
WO2010047388A1 PCT/JP2009/068271 JP2009068271W WO2010047388A1 WO 2010047388 A1 WO2010047388 A1 WO 2010047388A1 JP 2009068271 W JP2009068271 W JP 2009068271W WO 2010047388 A1 WO2010047388 A1 WO 2010047388A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
network
program
calculation
agent
Prior art date
Application number
PCT/JP2009/068271
Other languages
English (en)
French (fr)
Inventor
秀明 鈴木
秀文 澤井
博之 大崎
Original Assignee
独立行政法人情報通信研究機構
国立大学法人大阪大学
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 独立行政法人情報通信研究機構, 国立大学法人大阪大学 filed Critical 独立行政法人情報通信研究機構
Priority to US13/125,540 priority Critical patent/US8984103B2/en
Priority to JP2010534850A priority patent/JP5534524B2/ja
Publication of WO2010047388A1 publication Critical patent/WO2010047388A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Definitions

  • the present invention relates to a calculation processing system for creating a program, a program creating method, and a program creating program.
  • Neumann-type computers stores programs as data in a storage device, and reads and executes programs stored in the storage device in order.
  • non-Neumann type computers also exist. Examples of non-Neumann type computers include data flow type computers (see, for example, non-patent document 1) and neurocomputers (see, for example, non-patent document 2).
  • a dataflow type computer represents a program in the form of a graph including nodes representing operations and links between nodes representing data transfer relationships between operations.
  • the data flow type computer starts execution of a certain process when all the processes that are the premise of that process are finished.
  • the dataflow computer uses tokens to control the start timing of each process.
  • Neurocomputers perform calculations using neural networks, ie, multiple units coupled together. Each unit is a simple computing element modeled on a nerve cell.
  • the neurocomputer repeats adjustment of the degree of coupling between units (referred to as learning) so as to reduce an error with a desired output (referred to as a teacher signal). As a result of repeated learning, the neurocomputer comes to output correct output.
  • genetic programming is known for program creation (see, for example, Non-Patent Document 3).
  • a program is represented by nodes and node topologies (such as a tree structure) that represent operations.
  • node topologies such as a tree structure
  • a plurality of such graph type programs are prepared, and appropriate graphs are screened by crossover, mutation, selection, etc. to create an appropriate program.
  • Peer-to-Peer Technology and Distributed Computing Technology As another technology trend, there is Peer-to-Peer (P2P) technology that enables distributed computing and the like on the Internet.
  • P2P Peer-to-Peer
  • clients for example, personal computers
  • the peer-to-peer scheme is characterized in that communication can be performed as long as there is room in the circuit bandwidth even if the number of terminals is enormous.
  • distributed computing is a type of information processing method.
  • individual parts of a program, or task (job) are run concurrently on multiple computers, which communicate with one another over a network.
  • job By using a plurality of computers via a network to perform calculations that require a large amount of computing resources, it is possible to increase throughput rather than performing calculations with one computer.
  • Peer-to-peer technology may be one architecture for such distributed computing.
  • Network virtualization By the way, in general, whether it is a system called a communication network or more specifically a peer-to-peer system as described above, the network physically includes a plurality of information communication devices (nodes) and these. It consists of communication lines (links) that interconnect each other.
  • Non-Patent Document 4 a system that manages and operates a network topology (network configuration) is regarded as practical, assuming that a virtual communication line between information devices not directly connected is actually regarded as a physical communication line. It is done.
  • the virtualization of such a network is described, for example, in Non-Patent Document 4.
  • a system that manages and operates the system topology by regarding (virtual) communication lines between information devices that are not directly connected in this way as physical communication lines is an overlay. It is called a system or overlay network.
  • a program executed by a conventional Neumann-type computer is created by coding an algorithm of processing to be executed by a user's own computer. Thus, the program does not change unless edited by the user.
  • the von Neumann computer can not output the correct calculation result desired by the user. For example, if the situation or environment changes, the user can not create a complete algorithm, and therefore, the computer can not output the correct calculation result.
  • an algorithm that outputs a correct operation result to an input is called a "complete" algorithm.
  • Dataflow computers have the same problems as Neumann computers. That is, even the data flow type computer can not output the correct calculation result if the user can not prepare a complete program.
  • a network that constitutes a neurocomputer is usually a network consisting of only operation nodes combining product-sum calculations and sigmoid functions etc., and it is usually applied only to a specific problem such as pattern recognition. is there. It is not always clear to the user what kind of neural network outputs the desired calculation result.
  • the present invention has been made to solve the problems as described above, and provides a calculation processing system, a program creation method, and a program creation program for creating a program for outputting a computation result desired by a user. To be an issue.
  • a calculation processing system which executes calculation using a network representing an algorithm structure of a program by a plurality of operation nodes and a plurality of edges respectively connecting operation nodes.
  • the plurality of operation nodes include operation nodes corresponding to various operations of the program, and further include a network updating unit that corrects the network using a calculation result of the calculation execution unit and a learning algorithm.
  • the plurality of operation nodes include operation nodes that perform calculations on control values representing the flow of the algorithm.
  • the plurality of operation nodes include operation nodes corresponding to arithmetic operations. More preferably, the network updating unit performs processing of changing, adding or deleting a computing node to the network.
  • the plurality of operation nodes include an operation node having a node variable
  • the network update unit calculates an error from the training value of the calculation result, calculates a contribution of the node variable to the error, and calculates the node based on the contribution. Modify the variable
  • the network updating unit calculates an energy error based on the error, calculates a derivative of the energy error for the node variable as a contribution, subtracts a value obtained by multiplying the derivative by the learning coefficient, and calculates the variable Update.
  • the learning coefficient is a value determined such that the energy error is (1-- 1 p ) times ( ⁇ 1 p is a real number greater than 0 and less than 1 ) by updating the variable.
  • an input unit for receiving an input from the outside, and a network creation unit for creating a network based on a program received by the input unit are further provided.
  • the program accepted by the input unit is source code written in a high-level language
  • the network creation unit converts the source code into language-independent intermediate code and creates a network based on the intermediate code.
  • the network updating unit changes an operation node whose output value does not continuously change a predetermined number of times or more to a constant node that outputs a constant value.
  • the network update unit randomly selects two or more operation nodes from among the plurality of operation nodes, and generates a new operation node connected to the selected operation node.
  • the network updating unit randomly selects a first operation node and a second operation node from among a plurality of operation nodes, and generates a bridge from the second operation node to the first operation node. .
  • the network updating unit randomly selects an operation node from among the plurality of operation nodes, and creates a branch for the selected operation node.
  • the network updating unit rewrites a plurality of constant nodes, each outputting a constant value, into one constant node according to a coupling law.
  • the network update unit splits operation nodes having node variables that are continuously corrected a predetermined number of times or more.
  • a program creation method using a computing system in which a computing system represents an algorithmic structure of a program by a plurality of operation nodes and a plurality of edges connecting operation nodes.
  • the plurality of operation nodes include operation nodes corresponding to various operations of the program, and further comprising the step of the calculation processing system modifying the network using the result of the calculation and the learning algorithm.
  • a program creation program for causing a computer processing system to create a program, the algorithm of the program having a plurality of operation nodes and a plurality of edges connecting operation nodes to the computer system.
  • the method includes the step of executing calculations using a network representing a structure, wherein the plurality of operation nodes include operation nodes corresponding to various operations of the program and cause the calculation processing system to correct the network using calculation results and a learning algorithm It further comprises a step.
  • the network corresponding to the program is modified using a learning algorithm. As a result, it is possible to create a program desired by the user.
  • the program created by the user can be modified to create a more complete program.
  • FIG. 5 is a diagram showing an intermediate code of GIMPLE format corresponding to the source code shown in FIG. 3. It is a figure which shows an example of ATN created based on a source code. It is a figure for demonstrating the firing timing of a calculation node.
  • FIG. 16 is a diagram showing an example of a node operation definition 135.
  • FIG. 6 is a diagram showing network information 134. It is a figure which shows the learning variable 136.
  • FIG. It is a figure which shows the 1st calculation process of the forward propagation using the network of FIG. It is a figure which shows the 2nd operation process of the forward propagation using the network of FIG. It is a figure which shows the 3rd operation process of the forward propagation which used the network of FIG.
  • FIG. 7 is a diagram showing a fourth operation process of forward propagation using the network of FIG. 6; It is a figure which shows the 5th calculation process of the forward propagation using the network of FIG.
  • FIG. 7 is a diagram showing a sixth operation process of forward propagation using the network of FIG.
  • FIG. 7 is a diagram showing an eighth operation process of forward propagation using the network of FIG. 6; It is a figure which shows the 9th calculation process of the forward propagation using the network of FIG. It is a figure which shows the 10th calculation process of the forward propagation using the network of FIG.
  • FIG. 7 is a diagram showing an eleventh operation process of forward propagation using the network of FIG. 6; It is a figure which shows the 12th calculation process of the forward propagation using the network of FIG.
  • FIG. 7 is a diagram showing a thirteenth operation process of forward propagation using the network of FIG. 6; FIG.
  • FIG. 7 is a diagram showing a fourteenth operation process of forward propagation using the network of FIG. 6; It is a figure which shows the 15th calculation process of the forward propagation using the network of FIG. It is a figure which shows the 16th calculation process of the forward propagation using the network of FIG. It is a figure which shows the 17th operation process of the forward propagation using the network of FIG. It is a figure which shows the 18th operation process of the forward propagation using the network of FIG. It is a figure which shows the 19th calculation process of the forward propagation using the network of FIG. It is a figure which shows the twentieth operation process of the forward propagation which used the network of FIG. It is a figure which shows the 21st operation process of the forward propagation using the network of FIG.
  • FIG. 7 illustrates forward propagation using the network of FIG. 6; It is a figure which shows the 34th operation process of the forward propagation which used the network of FIG. It is a figure which shows the 35th calculation process of the forward propagation using the network of FIG. It is a figure which shows the 36th calculation process of the forward propagation using the network of FIG. It is a figure which shows the 37th calculation process of the forward propagation which used the network of FIG.
  • FIG. 7 is a diagram showing a forty-first operation process of forward propagation using the network of FIG. 6; It is a figure for demonstrating a chain rule. It is a figure for demonstrating the back propagation of the derivative of an error. It is a figure for demonstrating the derivative regarding the node constant of an error. It is a figure for demonstrating constantization. It is a flowchart which shows the flow of the process which the topology learning part 228b performs in constant-izing.
  • FIG. 74 is a diagram for describing an ATN obtained by converting the code shown in FIG. 73.
  • FIG. 2 is a conceptual diagram for explaining a computing system 1000 using peer-to-peer technology.
  • the calculation processing apparatus 100 corrects a program (hereinafter also referred to as an initial program) given from the outside, and creates a program that outputs a more appropriate calculation result.
  • the calculation processing device roughly performs the following three processes. (1) Conversion of program to network (2) Execution of calculation using network (3) Modification of network The outline of each processing will be described below.
  • the computing device 100 creates a network type program based on the given initial program. That is, the computing device 100 creates a network that represents the structure of the algorithm of the initial program.
  • the computing device 100 converts an initial program into a network of ATN (Algorithmically Transitive Network) format.
  • the ATN type network represents the structure of an algorithm by a plurality of operation nodes each representing an operation and a plurality of edges connecting any two operation nodes of the plurality of operation nodes.
  • An edge has a direction that represents the order of operations.
  • the calculation processing device 100 executes the calculation using the created network. That is, the calculation processing device 100 performs the operation by the operation node on the input value in the order represented by the edge.
  • the calculation processing apparatus 100 performs an operation by each operation node on a shuttle agent (hereinafter simply referred to as an agent) having information necessary for the operation.
  • the operation node receives the input of one or more agents, performs operation on the agent input from the edge based on a predetermined rule, and outputs the agent after operation to the edge.
  • the agent output from the operation node is input to the operation node of the edge destination. Details of the agent and details of the processing rules for the agent will be described later.
  • the calculation processing apparatus 100 corrects the network based on the calculation result using the network using a learning algorithm. That is, the computing device 100 modifies the network so that the calculation result by the network approaches the value desired by the user. More specifically, the computation processing device 100 performs back propagation learning that changes constant values of operation nodes, and topology learning that changes the topology of the network. Details of back propagation learning and topology learning will be described later.
  • the calculation processing apparatus 100 can create a network (that is, a program) that outputs a value desired by the user by repeating (2) execution of calculation using the network and (3) modification of the network. .
  • FIG. 1 is a diagram schematically showing the flow of processing performed by the calculation processing device 100. As shown in FIG.
  • step S1 the calculation processing apparatus 100 first converts the input program to prepare an initial network ((1)). Next, the calculation processing device 100 sets the mode to the forward mode. In the Forward mode, the computing device 100 executes network calculations, but does not execute network change processing. Then, the calculation processing apparatus 100 substitutes the input into the Start node at the start point of the operation, and causes the Start node to execute the calculation (fire the Start node) ((2)).
  • the calculation processing device 100 performs the process of step S2. If not, the calculation processing device 100 proceeds to the process after step S4.
  • the calculation processing apparatus 100 uses the counter to determine whether the agent has not moved for a while.
  • step S 2 the calculation processing apparatus 100 first determines, at the ans node, an energy error E and a differential coefficient D x of the energy error E determined based on the difference between the operation result ⁇ x>, the correct result (teacher value) and the operation result. , D r ((1)). Details of these values will be described later.
  • the calculation processing device 100 sets the mode to Backward ((2)).
  • the computing device 100 performs back propagation learning.
  • the calculation processing device 100 ends the process when the calculation result satisfies the end criterion in step S3. In the present embodiment, the calculation processing device 100 ends the process when the energy error E is equal to or less than a predetermined value. If the calculation result does not satisfy the termination criterion, the calculation processing device 100 continues the subsequent processing.
  • the calculation processing device 100 performs the process of step S4 when the agent does not move for a while in the backward mode, that is, when the calculation for all agents is completed in the back propagation learning. If not, the calculation processing device 100 proceeds to the process after step S5.
  • the calculation processing apparatus 100 uses the counter to determine whether the agent has not moved for a while.
  • step S3 the calculation processing device 100 first calculates the learning coefficient ⁇ , and updates the node variable ⁇ z ⁇ based on the learning coefficient ⁇ ((1)). Details of this process will be described later.
  • the computing device 100 executes topology learning ((2)). That is, based on predetermined rules such as CON, MKV, BRG, FRK, MGT, MGN, and DIV, generation or deletion of operation nodes and edges is performed.
  • predetermined rules such as CON, MKV, BRG, FRK, MGT, MGN, and DIV.
  • step S5 the computing device 100 executes an agent operation by the operation node. Further, the calculation processing device 100 moves all agents to the next operation node in step S6.
  • the processing of one step S5 and step S6 corresponds to one time step of the calculation.
  • step S2 or step S3 is performed.
  • the program changes to one which outputs the user's desired data according to the principle of the steepest descent learning and the self-organizing learning. That is, the user can obtain a program environment in which the algorithm of the program coded by the user is automatically modified.
  • FIG. 2 is a block diagram showing the configuration of the calculation processing apparatus 100 according to the present embodiment.
  • the calculation processing device 100 includes a computer main body 102, a monitor 104 as a display device, and a keyboard 110 and a mouse 112 as input devices.
  • the monitor 104, the keyboard 110, and the mouse 112 are connected to the computer body 102 via the bus 105.
  • the computer main body 102 includes a flexible disk (Flexible Disc, hereinafter referred to as "FD") drive 106, an optical disk drive 108, a CPU (Central Processing Unit) 120, a memory 122, and a direct access memory device, for example, a hard disk 124. And a communication interface 128. These components are connected to one another by a bus 105.
  • FD Flexible disk
  • a CPU Central Processing Unit
  • the FD drive 106 reads and writes information from and to the FD 116.
  • the optical disc drive 108 reads information on an optical disc such as a compact disc read-only memory (CD-ROM) 118 or the like.
  • the communication interface 128 exchanges data with the outside.
  • the CD-ROM 118 may be another medium, for example, a DVD-ROM (Digital Versatile Disc) or a memory card, as long as it is a medium capable of recording information such as a program installed in the computer main body.
  • the computer main body 102 is provided with a drive device capable of reading these media.
  • a magnetic tape device to which a cassette type magnetic tape is detachably attached and accessed may be connected to the bus 105.
  • the memory 122 includes a read only memory (ROM) and a random access memory (RAM).
  • ROM read only memory
  • RAM random access memory
  • the hard disk 124 stores an initial program 131, a network creation program 132, a network correction program 133, network information 134, a node operation definition 135, and a learning variable 136.
  • the initial program 131 is a program that is the basis of program creation.
  • the hard disk 124 can store a program created by the user as an initial program 131.
  • the initial program 131 may be supplied by a storage medium such as the FD 116 or the CD-ROM 118, or may be supplied by another computer via the communication interface 128.
  • the network creation program 132 creates a network corresponding to the initial program 131 based on the initial program 131.
  • the network creation program 132 also stores the network information 134 on the created network in the hard disk 124.
  • the network correction program 133 corrects the network created by the network creation program 132. More specifically, the network correction program 133 creates a new network with the network information 134 corrected, if the energy error between the execution result of the operation based on the network information 134 and the desired value is equal to or more than a predetermined threshold. Do.
  • the network information 134 includes information on the network created by the network creation program 132, and information created by the network modification program 133 at the time of operation by the network or modification of the network.
  • the node operation definition 135 represents a rule of operation by operation nodes included in the network.
  • the node operation definition 135 includes information specifying an operation node (operation code), the number of edges input to the operation node (input number), and the like. Details of the node operation definition 135 will be described later.
  • the learning variable 136 is information required to correct the network.
  • the learning variable 136 includes, for example, a teacher value desired by the user as a calculation result, an energy error E calculated based on an error between the calculation result by the network and the teacher value, and the like. Details of the learning variable 136 will be described later.
  • node operation definition 135 and the learning variable 136 those created by the user using the input device can be used. However, these may be supplied by a storage medium such as the FD 116 or the CD-ROM 118, or may be supplied by the other computer via the communication interface 128.
  • the network creation program 132 and the network modification program 133 may be supplied by a storage medium such as the FD 116 or the CD-ROM 118 or may be supplied by another computer via the communication interface 128.
  • the CPU 120 functioning as an arithmetic processing unit executes processing corresponding to each program described above, using the memory 122 as a working memory.
  • the network creation program 132 and the network correction program 133 are software executed by the CPU 120 as described above.
  • such software is stored and distributed in a storage medium such as a CD-ROM 118 or an FD 116, read from the storage medium by the optical disk drive 108 or the FD drive 106 or the like, and temporarily stored in the hard disk 124.
  • the computing device 100 is connected to the network, it is copied from the server on the network to the hard disk 124 once. Then, it is further read from the hard disk 124 to the RAM in the memory 122 and executed by the CPU 120.
  • the program may be directly loaded to the RAM and executed without being stored in the hard disk 124.
  • the hardware itself of the computer shown in FIG. 2 and its operating principle are general. Therefore, the essential part in realizing the functions of the present invention is software stored in a storage medium such as the FD 116, the CD-ROM 118, the hard disk 124 and the like.
  • FIG. 3 is a block diagram showing a functional configuration of the calculation processing apparatus 100 according to the present embodiment.
  • the calculation processing device 100 includes an input unit 210 that receives data from the outside, an operation unit 220, an output unit 230 that outputs the operation result of the operation unit 220 to the outside, and a storage unit 240.
  • Arithmetic unit 220 performs an operation on the data stored in storage unit 240.
  • Arithmetic unit 220 includes a network creation unit 222, a calculation execution unit 226, and a network update unit 228.
  • the network creation unit 222 creates the network information 134 based on the initial program 131 stored in the storage unit 240.
  • the network creation unit 222 includes a format conversion unit 224.
  • the format conversion unit 224 converts the initial program 131 into an intermediate format that does not depend on the program description language.
  • the calculation execution unit 226 executes the calculation using the network based on the network information 134 and the node calculation definition 135. Details of the process performed by the calculation execution unit 226 will be described later.
  • the network updating unit 228 corrects the network information 134 using a learning algorithm. More specifically, the network updating unit 228 includes a constant learning unit 228a and a topology learning unit 228b.
  • the constant learning unit 228a corrects the constant value of the operation node included in the network based on the error included in the learning variable 136.
  • the topology learning unit 228 b executes network update processing such as generation and deletion of operation nodes and generation and deletion of edges as needed based on a predetermined rule. Details of the processing performed by the network update unit 228 will be described later.
  • the network created by the network creation unit 222 will be described by taking a specific example.
  • the initial program 131 is a source code described in C language shown in FIG.
  • FIG. 4 is a diagram showing an example of the initial program 131.
  • the initial program 131 may be source code described in a programming language other than C language.
  • the initial program 131 may be written in a high-level language such as C, C ++, Fortran, Ada, Objective-C, Java (registered trademark), Pascal, or COBOL.
  • the format conversion unit 224 included in the network creation unit 222 converts the source code into an intermediate code in the GIMPLE format, and converts the intermediate code into a network.
  • Intermediate code in GIMPLE format (hereinafter simply referred to as GIMPLE) is a source code described in GCC (GNU Complier Collection) internal representation.
  • GCC GNU Complier Collection
  • Source code depends on the language in which the source code is written.
  • GIMPLE is independent of high-level language and independent of architecture. Therefore, the network creation unit 222 can convert source code described in various languages into a network by a unique algorithm.
  • GIMPLE is an intermediate result of the high-level language compiler compilation process. That is, GIMPLE is a code before generation of an object code in machine language.
  • the format conversion unit 224 can create GIMPLE according to one of various known methods of creating GIMPLE. For example, the format conversion unit 224 can create GIMPLE by using the gcc -fdump-tree-gimple option of GCC 4.1 or later.
  • the network creation unit 222 creates a network type program corresponding to GIMPLE.
  • the network creation unit 222 creates an ATN type network.
  • the rules for creating a network in ATN format from intermediate code in GIMPLE format will be described later.
  • a network in ATN format may be simply referred to as ATN.
  • the method of creating the ATN is not limited to the above.
  • the network creation unit 222 may create a ATN by executing a program specialized to a specific type of initial program that creates the ATN from the initial program without passing through an intermediate format.
  • the network creation unit 222 may create an ATN based on an object code written in a manner that can be understood by a computer.
  • the user may manually create the ATN.
  • FIG. 6 An example of the ATN created by the network creation unit 222 based on the source code according to the above procedure is shown in FIG.
  • the characters or symbols in the figure indicate the operation type of the node.
  • the edges are represented by solid arrows or broken arrows. Solid arrows represent the flow of agents including arithmetic values.
  • the dashed arrows represent agent flows that include only control values.
  • a portion enclosed by a frame 500 represents loop operation processing.
  • the control value represents the likelihood of the presence of the agent.
  • the control value takes a value of 0 or more and 1 or less. The lower the judgment value by the conditional branch performed during calculation execution, the smaller the control value of the agent present in the branch.
  • the calculation execution unit 226 deletes a branch having a control value smaller than a predetermined threshold so that the calculation can be completed in finite time and memory resources.
  • Operation nodes represent data generated by individual local computations or computations.
  • the edge connecting the operation nodes represents register transfer.
  • An agent represents data to be calculated or used for calculation. The agent is generated by the operation node each time the calculation is executed, and the operation node gives the generated agent the calculation result.
  • the calculation by the agent is realized by propagation from the input node to the output node.
  • the principle of calculation by the agent is the following two. [Principle 1] A set of values (x, r) propagates from edge-attached agents to agents. [Principle 2] The binary label vector of the agent is inherited from the parent agent to the child agent.
  • the set of values is a set of an arithmetic value and a control value.
  • Each agent has a set of values.
  • the operation node performs an operation according to the type of operation node on the set of agent values input to the operation node. Then, the operation node outputs an agent having a set of values after the operation.
  • the agent input to the operation node is called a "parent agent”, and the agent output by the operation node is called a "child agent”.
  • a binary label vector indicates what kind of conditional branch the agent has traced.
  • the binary label vector contains information on the number of branch points that the agent has passed and information on whether the agent has taken a True or False branch at each branch point.
  • the binary label vector is simply referred to as a label.
  • the quotation mark (') represents the negation of the Boolean variable to the left of the quotation mark.
  • the lower case alphabets (a, b,...) Or the negation thereof indicate the determination result in each branch. Lower case letters without a negative sign indicate that the judgment result is True. A small letter with a negative sign indicates that the judgment result is False.
  • the boolean variable corresponding to the newer branch is placed to the left of the label.
  • An operation node that does not cause a conditional branch gives the child agent the same label as that of the parent agent.
  • the operation node causing the branch gives the child agent a new label obtained by multiplying the label of the parent agent by the new Boolean variable.
  • FIG. 7 is a diagram for explaining the firing timing of the operation node.
  • the firing timing of the operation node differs depending on whether one or more agents are input to the operation node.
  • a one-input operation node fires according to the following rule 1. [Rule 1] (In the case of one-input operation) The operation node fires independently.
  • FIG. 7A is a diagram for describing an operation performed by the operation node 304 having one input and two outputs on the agent.
  • the one-input operation node 304 alone fires upon receiving the parent agent 402 output from the operation node 302. That is, upon receiving the parent agent 402, the operation node 304 outputs the child agent 404 and the child agent 406.
  • the operation node 304 determines the set of values (X, R) of the child agent 404 and the child agent 406 based on the set of values (x 0 , r 0 ) of the parent agent 402.
  • the binary label vector of the parent agent 402 is inherited by the child agents 404,406.
  • the binary label vector will be represented by the number and color of circles representing the agent.
  • the binary label vectors of the parent agent 402 and the child agents 404 and 406 are common, and they are represented by one black circle.
  • multi-input operation nodes fire according to the following rule 2.
  • Rule 2 (In the case of multi-input operation) The operation node fires if labels A and B of two agents input to the operation node satisfy AB ⁇ 0.
  • FIG. 7B is a diagram for describing an operation performed by the 2-input 2-output operation node 314 on an agent having the same label.
  • Operation node 314 receives agent 408 and agent 410 from operation node 310 and operation node 312, respectively.
  • the operation node 314 outputs the agent 412 and the agent 414 having the label a to the operation node 316 and the operation node 318, respectively.
  • an operation node to which an agent with the same label is input gives a child agent the same label as the label of the input agent.
  • FIG. 7C is a diagram for explaining an operation performed by an operation node 319 having two inputs and one output on agents having different labels.
  • negation expresses the bar of superscript.
  • This agent is fireable. That is, the agent having the shorter label remains as a fireable agent.
  • the remaining agents are waiting. That is, the remaining agents are not operated until a new agent arrives at the operation node.
  • the labels of waiting agents are indicated by diagonal lines.
  • the shaded circle from top left to bottom right corresponds to the wait state of the positive Boolean variable (open circle).
  • the shaded circle from top right to bottom left corresponds to the wait state of the negative boolean variable (black circle).
  • the label (here, AB ') of the agent remaining as the fireable agent is called "complementary label".
  • the reason for calling in this way is that the label of the agent remaining as the fireable agent is paired with the label of the child agent.
  • Boolean variable “1” indicates that the result of the corresponding branch may be True or False (Don't care).
  • FIG. 8 is a diagram showing an example of the node operation definition 135.
  • the node operation definition 135 includes the operation name of the operation node, one character code uniquely determined in association with the operation node, the number of inputs indicating the number of agents input to the operation node, arithmetic / control
  • the parameter includes an output arithmetic value X and an output control value R.
  • the arithmetic / control parameter takes a value of “A (initial letter of Arithmetic)” when the operation node performs an operation on an arithmetic value. Further, the arithmetic / control parameter takes a value of “R (Regitive initial)” when the operation node performs an operation on the control value. Further, the arithmetic / control parameter takes a value of “A / R” when the operation node performs an operation on both the arithmetic value and the control value.
  • the output arithmetic value X indicates the arithmetic value of the agent output by the operation node.
  • x 0 , x 1 and x l indicate the arithmetic value of the agent input to the operation node.
  • two output operation values are indicated by X 0 and X 1 respectively.
  • the output control value R indicates the control value of the agent output by the operation node.
  • r 0 and r 1 indicate control values of the agent input to the operation node.
  • the two output control values are respectively indicated by R 0 and R 1 .
  • the Start node is represented by the letter S.
  • the Start node is located at the start point of the operation.
  • the number of inputs of the Start node is zero.
  • Arithmetic const. (Arithmetic constant) nodes are represented by the letter c.
  • the number of inputs of the Arithmetic const. Node is one.
  • Arithmetic const. Node performs an operation on an arithmetic value.
  • the Arithmetic const. Node gives a constant v as an arithmetic value to the output agent regardless of the arithmetic value of the input agent.
  • v is one of the node variables set for each operation node.
  • numerical values (1.0 and 3.0) near the circled c represent v of the Arithmetic const. Node.
  • the Arithmetic const. Node does not perform an operation on the control value. That is, the Arithmetic const. Node gives the output agent the control value r 0 of the input agent as a control value.
  • operation nodes can generally output a set of values after operation to one or more operation nodes.
  • the Regulating const. Node is represented by the letter C.
  • the number of inputs of Regulating const. Node is 1.
  • the number of outputs of Regulating const. is 2.
  • the Regulating const. Node performs an operation on a control value.
  • the Regulating const. Node gives an agent that outputs 0 as an arithmetic value regardless of the input agent's arithmetic value.
  • s is one of the node variables.
  • s takes a value of 0 or more and 1 or less.
  • the number of outputs of the Regulating const. Node is limited to two.
  • the number of inputs of Equal node is one.
  • the Equal node gives an agent that outputs the same set of values as the input agent has.
  • the Equal node outputs a set of values to one or more agents. That is, the Equal node can pass the operation result of one operation node to one or more other operation nodes.
  • D **** (such as D2533) surrounded by a frame also represents an Equal node. D **** is described for convenience in order to show the correspondence with GIMPLE. In the network actually created, the operation node represented by D **** is the same as the Equal node.
  • Negative nodes are represented by the letter n.
  • the number of inputs of Equal node is one.
  • the negative node gives the output agent the inverted sign of the input agent's arithmetic value.
  • Inverse nodes are represented by the letter i.
  • the number of Inverse node inputs is one.
  • the Inverse node provides the agent which outputs the inverse of the input agent's arithmetic value.
  • Subtraction nodes are represented by the character-.
  • the number of inputs of Subtraction node is two.
  • the Subtraction node gives an agent the output of the difference between the arithmetic values of two input agents.
  • the Subtraction node gives the smaller one of the control values of the two input agents to the output agent. This is because the existence probability of the edge exiting the Subtraction node does not exceed this value. Since the Subtraction node outputs a control value as low as possible, branch tracking becomes easy.
  • the Division node is represented by the character /.
  • the number of inputs of Division node is two.
  • the Division node provides the agent that outputs the quotient of the arithmetic values of the two input agents. Also, as in the case of the Subtraction node, the Division node gives the smaller one of the control values of the two input agents to the output agent.
  • a Less than node (or a decision node) is represented by the letter L.
  • the number of inputs of the Less than node is two.
  • the Less than node performs an operation on the control value.
  • the Less than node gives an agent that outputs 0 as an arithmetic value regardless of the input agent's arithmetic value.
  • is a constant and ⁇ r is a node variable. That is, agents output by the Less than node are classified into two types according to the value of the control value. Each type of agent may be one or more.
  • the Write node is represented by the letter w.
  • the number of inputs of the Write node is one.
  • the Write node performs operations on arithmetic values and control values.
  • the Write node outputs two edges.
  • the Read node is represented by the letter r.
  • the number of inputs of the Read node is two.
  • the Read node performs an operation on the control value.
  • the Read node does not depend on the agent's arithmetic value on one input edge (in FIG. 6, an edge whose “0” is drawn in the vicinity), and the other input edge (in FIG. Output the agent's arithmetic value x 1 on the drawn edge). Also, the Read node outputs the smaller one of the two input control values.
  • the network can express a conditional branch such as an if statement.
  • the Addition node is represented by the character +.
  • the number of inputs of Addition node is 2 or more (represented by 2+ in FIG. 8).
  • the Addition node sums all the arithmetic values of the input agents. Also, the Addition node outputs the smallest control value of the input agent.
  • the Multiplication node is represented by the character *.
  • the number of inputs of the Multiplication node is 2 or more (represented by 2+ in FIG. 8).
  • the Multiplication node takes the product of the arithmetic values of all the agents entered. Also, the Addition node outputs the smallest control value of the input agent.
  • the operation nodes include operation nodes corresponding to various operations in the program, for example, four operations.
  • the operation nodes are not limited to operation nodes corresponding to calculations other than product-sum or sigmoid calculation used in the conventional neural network.
  • the network is represented by various operation nodes. Therefore, the network is versatile and can represent various programs.
  • storage part 240 stores are demonstrated in detail following the description about a network, an agent, and a computing node.
  • FIG. 9 is a diagram showing the network information 134.
  • network information 134 includes node information 134a, edge information 134b, agent information 134c, and a deletion label list 134d.
  • the node information 134a is defined for each operation node included in the network.
  • the node information includes: an operation code, a node variable, a differential coefficient of an energy error E between the operation result by the network and a teacher value, a set of value sets generated by firing at the node, and a node It includes a pointer to an edge, output information, and an index of the edge.
  • the operation code represents the type of operation node.
  • An operation name or a one-character code can be used as the operation code.
  • the derivative of the error E with respect to the node variable is used in constant learning of the network described later.
  • the pointer from node to edge represents the edge connected to the node.
  • the output information is a binary variable representing whether the edge connected to the node is an edge from which the operation node exits. If the output information has a value of True, the edge leaves the operation node. If the output information has the value of False, the edge enters the operation node.
  • the index of an edge is a value of 0 or 1 defined for an edge output from an operation node that outputs two types of values, such as a determination node. The index represents the kind of output value that the agent on the edge has.
  • the edge information 134 b indicates how each edge connects operation nodes.
  • the edge information 134 b includes a pointer to an operation node (start point node) connected to the start point of the edge and a pointer to an operation node (end point node) connected to the end point of the edge.
  • the agent information 134c is created during execution of an operation using a network with respect to various information possessed by the agent.
  • the agent information 134c includes a set of values, a binary label vector, a derivative with respect to a set of values of energy error E, a partial derivative of a set of values of a child agent with respect to a set of values of this agent, and a child agent And a pointer to a parent / child agent and a pointer to an edge at which the agent is located.
  • Each derivative and each partial derivative are used in constant learning of a network described later.
  • the pointers to parent / child agents represent genealogy between agents, that is, the branching structure of operations. Pointers to parent / child agents are required for back propagation learning, which will be described later.
  • FIG. 10 is a diagram showing a learning variable 136.
  • a learning variable 136 is provided for network updates, regardless of the structure of the network.
  • the learning variables 136 include a learning coefficient, a learning rate per one pass, a teacher value, an energy error E, and an in-E coefficient. The details of these variables will be described in the description of the network update process.
  • the calculation execution unit 226 executes forward propagation in accordance with the following rules.
  • the rules 1 to 5 have already been described.
  • [Rule 1] In the case of one-input operation
  • the agent fires independently.
  • [Rule 2] In the case of multi-input operation)
  • the operation node fires if labels A and B of two agents input to the operation node satisfy AB ⁇ 0.
  • [Rule 3] A Boolean product AB of labels A and B of the input agent is inherited to the child agent.
  • labels A and B of the input agent change to AB 'and A'B, respectively.
  • Agents with label 0 can not fire.
  • FIGS. 11 to 51 are diagrams showing an operation process of forward propagation using the network shown in FIG. 6, respectively. 11 to 51 do not show identifiers (0, 1) of inputs or outputs of the determination node, the write node, and the read node, but they are the same as those shown in FIG.
  • calculation execution unit 226 causes node N1 to output an agent having a value set (..., 1).
  • agent (x, r) an agent having a value set (x, r) will be denoted as agent (x, r).
  • x ... indicates that there is no value of arithmetic value.
  • node N2 that has received agent (... 1) outputs agent (0, 1).
  • node N2 that has received agent (0,1) outputs agent (0,1) to node N3. Further, the node N2 outputs the agent (... 1) to the node N13.
  • node N 4 outputs agent (0, 1) to node N 9 and outputs agent (0, 1) to node N 5. Further, the node N13 outputs the agent (0, 1) to the node N14.
  • node N 14 outputs agent (0, 1) to node N 15. Also, the node N14 outputs the agent (... 1) to the node N17.
  • the agent (0, 1) that has arrived at the node N9 is ready because it can be fired but the other agent does not arrive at the node N9.
  • the agent arriving at the node N5 likewise enters the waiting state.
  • node N15 outputs agent (0,1) to node N11 and agent (0,1) to node N18. Further, the node N17 outputs the agent (..., 1) to the node N18 and the agent (..., 1) to the node N19.
  • node N18 In the next step, two agents are input to node N18, and node N18 fires. This is because the Boolean product of the labels of these agents is not zero.
  • the node N18 outputs the agent (0, 1) to the node N20.
  • the agent on which the operation has been performed can not fire.
  • the agent that can not be fired is not shown because it does not affect the subsequent operations.
  • the node N19 outputs the agent (1.5, 1) to the node N20.
  • the agent input to the node N11 is in a waiting state.
  • node N20 In the next step, two agents are input to node N20, and node N20 fires. This is because the Boolean product of the labels of these agents is not zero.
  • the node N20 outputs the agent (..., 1) to the node N21, and outputs the agent (..., 0) to the node N22.
  • the node N20 adds different Boolean variables to two child agents.
  • the agent (... 0) can not be fired according to rule 5, and its label [black, black] is stored in the deletion label list.
  • a new Boolean variable is added to the label of each of the fireable agents (the node N5, the node N9 and the agent before the node N15).
  • the labels of these agents are [black, white].
  • the negation of the label stored in the deletion label list is applied to all the labels in the network, and the labels of agents waiting at node N5, node N9 and node N15 change.
  • node N21 outputs an agent (... 1) to nodes N5 and N6.
  • node N5 In the next step, two agents are input to node N5, and node N5 fires.
  • the node N5 outputs the agent (0, 1) to the node N7.
  • the node N6 outputs the agent (3, 1) to the node N7.
  • node N7 fires agent (3, 1) to node N8.
  • node N8 outputs agent (3, 1) to node N4, and agent (..., 1) to nodes N10 and N11.
  • node N4 In the next step, two agents are input to node N4, and node N4 fires.
  • the node N4 outputs the agent (3, 1) to the node N9.
  • the agent (0, 1) which has been waiting at the node N 9 previously, can not fire.
  • the node N10 outputs the agent (1,1) to the node N12.
  • the node N11 outputs the agent (0, 1) to the node N12.
  • node N12 In the next step, two agents enter node N12, and node N12 fires.
  • the node N12 outputs the agent (1,1) to the node N16.
  • node N16 outputs agent (1,1) to node N15 and agent (..., 1) to node N17.
  • node N17 outputs agent (..., 1) to node N18, and agent (..., 1) to node N19. Also, the node N15 outputs the agent (1,1) to the node N18.
  • node N18 In the next step, two agents enter node N18, and node N18 fires.
  • the node N18 outputs the agent (1,1) to the node N20.
  • the node N19 outputs the agent (1.5, 1) to the node N20.
  • the two agents input to node N 20 fire.
  • the node N20 outputs the agent (..., 0.8) to the node N21, and outputs the agent (..., 0.2) to the node N22.
  • the node N20 adds different Boolean variables to two child agents.
  • node N21 outputs an agent (..., 0.8) to node N6. Also, the node N22 outputs the agent (... 0.2) to the node N9.
  • node N5 outputs agent (3, 0.8) to node N7.
  • the node N6 outputs the agent (3, 0.8) to the node N7.
  • the Boolean product of the labels of the two agents input to the node N9 that is, the Boolean product of the labels [black and white] and the labels [black and white, black] is not zero. Therefore, the node N9 fires.
  • an agent with a shorter label is a fireable agent with a complementary label.
  • Agents with shorter labels are not limited to those that fired. All agents in the network and with the shorter label are fireable agents with complementary labels.
  • node N9 outputs agent (3, 0.2) to node N23. Since node N23 is an ans node, rule 8 is applied, and the label of the agent input to node N23 is stored in the deletion label list.
  • FIGS. 32 to 51 shows the state of the agent when the third operation result is output to the node N23.
  • the calculation execution unit 226 ends forward propagation calculation when there is no agent moving in the network.
  • the calculation execution unit 226 outputs a plurality of value pairs (x l , r l ) as the calculation result.
  • l is a subscript representing an agent.
  • the calculation execution unit 226 outputs the weighted average ⁇ x> by the control value of the arithmetic value as a final calculation result.
  • the calculation result obtained as described above may be different from the user's desired value (teaching value).
  • the network updating unit 228 corrects the network if the energy error between the calculation result and the training value is larger than a predetermined value.
  • the energy error is expressed as a function of x l and r l output to the ans node.
  • the calculation execution unit 226 calculates the energy error E according to the following equation (1).
  • t is a teacher value.
  • ⁇ and ⁇ are error coefficients.
  • the error coefficient is a constant that is predetermined or determined by the user as appropriate.
  • the first term represents the square of the error between the calculation result ⁇ x> and the training value t. The closer the calculation result is to t, the smaller the energy error.
  • the second and third terms are provided to reflect that the sum of control values is preferably one. If the sum of control values is not 1, this means that the number of branches removed is too large or too small, and the calculation may not be performed correctly.
  • the calculation execution unit 226 passes the energy error E to the network updating unit 228.
  • the network updating unit 228 corrects the network using a learning algorithm based on the energy error E.
  • the network updating unit 228 corrects the network using, for example, a learning algorithm similar to error back propagation learning or hebb learning in a neural network.
  • the network updating unit 228 obtains the derivative of the error for the node variable as a contribution, and updates ⁇ z ⁇ by the steepest descent method. That is, the network updating unit 228 updates ⁇ z ⁇ according to the following equation (2).
  • is a learning coefficient.
  • D z is the derivative of E for z.
  • the network updating unit 228 obtains Dz of each node based on back propagation of the derivative of the energy error.
  • Back propagation of the derivative of the energy error refers to the property that the derivative of the energy error parent agent variable can be calculated based on the derivative of the energy error child agent variable.
  • the network updating unit 228 sequentially calculates the derivative of the energy error for each operation node from the operation node on the output side of the network to the operation node on the input side.
  • the network updating unit 228 determines in what order the derivative of the energy error is to be obtained based on the pointer (family tree) to the parent / child agent.
  • the chain rule is a rule that the derivative of an input variable of a function is equal to the sum of products of partial derivatives of all the nodes from the terminal node to the variable.
  • FIG. 52 is a diagram for explaining a chain rule.
  • z a 2 x.
  • the derivative of y for a can be expressed as the following equation (*).
  • the first term on the right-hand side is the product of partial derivatives of the path of the solid line.
  • the second term on the right side is the product of the partial derivatives for the dashed line path. Therefore, it can be understood that the chain rule is established. Note that, as can be inferred from the equation (*), the chain rule is a paraphrased version of the partial differential method of the composite function. Therefore, chain rules always hold.
  • the derivative of the error is back-propagated. That is, the derivative of x and r of the parent agent of the error can be calculated based on the derivative of X and R of the child agent of the error and the partial derivative of the node operation. More specifically, the error derivative D xl (or D rl ) for the parent agent x l (or r l ) is the error derivative for the child agent X, R and x l (or The sum of products of partial derivatives for r l ) is added for all child agents.
  • FIG. 53 is a diagram for describing back propagation of a differential coefficient of an error.
  • the differential coefficients D xl and D rl of errors for x l and r l of the parent agent in FIG. 53 can be expressed as the following equations (3) and (4), respectively.
  • the network updating unit 228 can obtain the differential coefficients for x and r of errors for all agents in order from the agent on the output side of the network to the agent on the input side.
  • partial derivatives ( ⁇ X / ⁇ x, ⁇ R / ⁇ x, ⁇ X / ⁇ r, ⁇ R / ⁇ r) of the node operation can be individually obtained for each operation node.
  • calculation forwarder 226 obtains a partial differential of the node operation at the time of forward propagation.
  • the partial differential can be calculated more efficiently than the network update unit 228 calculates the partial differential during back propagation.
  • the program can be simplified as a whole.
  • the derivative of the error about the node variable ⁇ z ⁇ can be calculated from the derivative of the child agent and the partial derivative of the node operation. More specifically, the derivative D z of the error for z of a node is the product sum of the derivative of the error for X, R of the child agent generated at the firing of that node and the partial derivative of z for X, R For all child agents.
  • FIG. 54 is a diagram for describing a derivative related to a node constant of an error.
  • Derivative D v of error for v arithmetic constants nodes of FIG. 54 can be expressed as the following equation (5).
  • control constants node with s as a node variables Similarly, the decision node having a beta r as node variables, it is possible to determine the differential coefficient D z error for the node variables.
  • Network update unit 228, the above procedure, the variable nodes, i.e., for all the operation node with node variables, determine the differential coefficient D z error for the node variables. Then, the network updating unit 228 substitutes the obtained D z into the equation (2), and updates the node variable z of each variable node.
  • the network updating unit 228 determines that the learning coefficient ⁇ is multiplied by (1 ⁇ lp ) by one update of ⁇ z ⁇ .
  • ⁇ lp represents a learning rate in one pass and is a constant greater than 0 and less than 1.
  • Equation (6) The deformation of the right side in equation (6) is due to Taylor expansion.
  • Equation (7) the following Equation (7) can be obtained for the learning coefficient ⁇ .
  • the network updating unit 228 may obtain the learning coefficient ⁇ according to the equation (7). That is, the network updating unit 228 obtains a learning coefficient ⁇ for each variable node based on the energy error E and D z obtained by back propagation according to the equation (7).
  • the value of ⁇ lp may be predetermined or may be determined by the user. According to the inventor's trial, the preferable value of ⁇ lp is about 0.5 to 0.7. However, the value of ⁇ lp is not limited to this.
  • the network updating unit 228 can update the network by changing the structure of the network, in addition to the above-mentioned updating of the node variable. That is, the topology learning unit 228 b included in the network updating unit 228 can update the network by performing addition and deletion of operation nodes and reconnection of edges. Such node creation / deletion and edge reconnection lead to modification of the network topology and change the algorithm. This update is called topology learning.
  • the topology learning unit 228 b changes the structure of the network in accordance with the following rules.
  • the topology learning unit 228 b may change the structure of the network according to some rules instead of following all the rules below.
  • FIG. 55 is a diagram for describing constantization.
  • FIG. 55 (a) is a diagram showing a part of the network before constantization.
  • FIG. 55 (b) shows a part of the network after constantization.
  • the topology learning unit 228b displays the network in FIG. 55 (b) when the Addition node (+) shown in FIG. 55 (a) continuously supplies the same arithmetic value to the output agent for a predetermined number of times or more. Change to state. That is, the topology learning unit 228 b changes the Addition node (+) to an arithmetic constant node (c). Further, the topology learning unit 228b sets an edge input to the arithmetic constant node as one having the smallest sum of r values in the past among the edges input to the Addition node. The topology learning unit 228b deletes the remaining edges input to the Addition node.
  • FIG. 56 is a flow chart showing the flow of processing performed by the topology learning unit 228b in making it constant.
  • topology learning unit 228b sets, for each operation node, a set of output values (arithmetic value or control value) based on a set (x [], r []) of a set of values included in node information 134a. It is determined whether or not the predetermined number or more continuously has the same value.
  • topology learning unit 228b performs arithmetic constant node operation in step S103. c) or change to a control constant node (C).
  • topology learning unit 228b extracts the input edge input to the operation node that has the smallest sum of control values r in the past.
  • topology learning unit 228b deletes the input edge not extracted at step S105.
  • topology learning unit 228b does not perform the process of steps S103 to S107.
  • variable generation New nodes are created as a function of randomly chosen nodes. This rule is called making variable (MKV). According to variable generation, the algorithm can be complicated without affecting the calculation result. Thus, variable generation can prevent the algorithm from falling into an inappropriate equilibrium state. In addition, according to variable generation, it is possible to prevent the network scale from being reduced by constantization and the like, and to maintain the network scale.
  • FIG. 57 is a diagram for describing variable generation.
  • FIG. 57 (a) shows a part of the network before variable generation.
  • FIG. 57 (b) is a diagram showing a part of the network after variable generation.
  • the topology learning unit 228 b randomly selects two operation nodes.
  • FIG. 57 (a) shows two selected operation nodes. Then, topology learning unit 228b generates an Addition node (+) shown in FIG. 57 (b). The topology learning unit 228 b also generates an edge to be input to the Addition node (+) from the two selected operation nodes.
  • the topology learning unit 228 b may select three or more operation nodes and connect the selected operation node to the Addition node. Also, the topology learning unit 228 b may generate operation nodes other than the Addition node.
  • FIG. 58 is a flowchart showing a flow of processing performed by the topology learning unit 228b in variable generation.
  • step S201 topology learning unit 228b randomly selects a plurality of operation nodes.
  • topology learning unit 228b generates a new operation node.
  • the topology learning unit 228 b generates operation nodes having the same number of inputs as the number of operation nodes selected in step S 201.
  • step S205 the topology learning unit 228b generates an edge to be input to the operation node generated in step S203 from each operation node selected in step S201.
  • FIG. 59 is a diagram for describing a bridge.
  • FIG. 59 (a) shows a part of the network before bridge processing.
  • FIG. 59 (b) shows a part of the network after the bridge process.
  • the topology learning unit 228 b randomly selects the operation node a and the operation node b.
  • FIG. 59 (a) shows the operation node a and the operation node b.
  • FIG. 60 is a flowchart showing a flow of processing performed by the topology learning unit 228b for bridge.
  • topology learning unit 228b randomly selects operation node a and operation node b.
  • topology learning unit 228b generates an edge directed from operation node b to c node.
  • topology learning unit 228b generates a Multiplication (*) node.
  • the topology learning unit 228b generates an edge from the operation nodes b and c to the * node.
  • the topology learning unit 228 b generates an Addition (+) node in step S 311.
  • topology learning unit 228b generates an edge from operation node a, * toward + node.
  • ⁇ Branch> The randomly selected node a branches depending on the determination between the nodes b and c.
  • nodes b and c are nodes randomly selected from among nodes whose sum of past control values r is larger than the sum of past control values r of node a. This process is called branching (Fork, FRK).
  • FIG. 61 is a diagram for explaining a branch.
  • FIG. 61A shows a part of the network before the branching process.
  • FIG. 61 (b) shows a part of the network after the branching process.
  • the topology learning unit 228 b selects the operation node a. Also, topology learning unit 228 b randomly selects operation node b and operation node c from among nodes whose sum of control values r in the past is larger than the sum of control values r in the past of operation node a.
  • FIG. 61 (a) shows the operation node a, the operation node b, and the operation node c.
  • Topology learning unit 228b generates a determination node (L) that receives inputs from operation node b and operation node c, as shown in FIG. 61 (b). Also, topology learning unit 228 b generates a first Read node (r) that receives the output of operation node a and the first output of the determination node. Topology learning unit 228 b generates a second Read node (r) receiving the output of operation node a and the second output of the determination node. Further, the topology learning unit 228 b generates an edge for inputting the calculation result of the first Read node and the second Read node to each operation node to which the operation node a is connected.
  • Branch processing can complicate the algorithm without changing the calculation result.
  • branch processing can prevent the algorithm from falling into an inappropriate equilibrium state.
  • branching process it is possible to prevent the network scale from being reduced by constantization or the like, and to maintain the network scale.
  • FIG. 62 is a flowchart showing the flow of processing performed by the topology learning unit 228b at the time of branching.
  • step S401 topology learning unit 228b randomly selects operation node a.
  • topology learning unit 228b randomly selects operation node b and operation node c from among nodes whose sum of control values r in the past is larger than the sum of control values r in the past of operation node a.
  • topology learning unit 228b generates a determination node (L) that receives inputs from operation node b and operation node c. That is, topology learning unit 228 b generates a determination node, and generates an edge directed to the determination node generated from operation node b and operation node c.
  • topology learning unit 228b generates a first r node and a second r node.
  • topology learning unit 228b connects operation node a to the first r node and the second r node. That is, the topology learning unit 228 b generates an edge from the operation node a toward the first r node and the second r node.
  • topology learning unit 228b connects the determination node to the first r node and the second r node. That is, the topology learning unit 228b generates an edge from the determination node toward the first r node and the second r node.
  • topology learning unit 228b generates an edge from operation node a to operation node a from the first r node and the second r node.
  • topology learning unit 228b deletes the edge that was originally output by operation node a.
  • ⁇ Tuple merge> Two vertically linked Addition nodes or Multiplication nodes merge according to a coupling rule.
  • the “vertical connection” of two Addition nodes means that the two Addition nodes are directly connected by an edge. This process is called Tuple merge (MGT). Tuple merge can simplify the algorithm without affecting the calculation result.
  • FIG. 63 is a diagram for explaining the Tuple merge.
  • FIG. 63 (a) shows a part of the network before Tuple merge.
  • FIG. 63 (b) shows a part of the network after Tuple merge.
  • the topology learning unit 228b deletes one Addition node from the two Addition nodes. Also, the topology learning unit 228 b connects the edge that has been connected to the deleted Addition node to the remaining Addition nodes. The topology learning unit 228 b performs the same processing on two vertically connected Multiplication nodes.
  • FIG. 64 is a flowchart showing a flow of processing performed by the topology learning unit 228b in Tuple merge.
  • topology learning unit 228b selects one + node (or * node).
  • topology learning unit 228 b determines whether or not the + node (or * node) selected in step S 501 has a + node (or * node) as a connection destination.
  • topology learning unit 228 b deletes the + node (or * node) selected in step S 501 in step S 505.
  • step S507 the topology learning unit 228b connects the edge that has been input to the deleted + node (or * node) to the + node (or * node) of the connection destination.
  • topology learning unit 228 b does not perform the processing in steps S 505 and S 507.
  • ⁇ Node merge> A plurality of constant nodes input to the Addition node or the Multiplication node merge according to a connection rule. This process is called "Merge Node (MGN)". Node merging can simplify the algorithm without affecting the calculation results.
  • FIG. 65 is a diagram for describing node merge.
  • FIG. 65 (a) shows a part of the network before node merging.
  • FIG. 65 (b) is a diagram showing a part of the network after node merging.
  • the topology learning unit 228b makes two constant nodes into two constant nodes as shown in FIG. 65 (b). Replace with one constant node with constant value added constant value of.
  • topology learning unit 228 b adds constant values obtained by adding constant values of all constant nodes input in Addition node to constant nodes input in Addition node. Rewrite to one constant node you have.
  • the topology learning unit 228 b performs the same processing on two vertically connected Multiplication nodes.
  • FIG. 66 is a flowchart showing a flow of processing performed by the topology learning unit 228b for node merging.
  • topology learning unit 228b selects one + node (or * node).
  • step S603 the topology learning unit 228b determines whether or not a plurality of constant nodes are input to the + node (or * node) selected in step S601.
  • topology learning unit 228b calculates the sum (or product) of constant values of constant nodes to be input in step S605, and newly obtains the value obtained by the calculation. Constant value.
  • topology learning unit 228 b generates a new constant node having a new constant value.
  • the topology learning unit 228 b also generates an edge from the new constant node to the + node (or * node) selected in step S 601. Furthermore, the topology learning unit 228 b replaces the edge input to the original constant node with the new constant node.
  • topology learning unit 228b deletes the original constant node.
  • topology learning unit 228b When a plurality of constant nodes are not input (NO in step S603), topology learning unit 228b does not perform the process of steps S605 to S609.
  • FIG. 67 is a diagram for describing constant node split.
  • FIG. 67 (a) is a diagram showing part of the network before constant node split.
  • FIG. 67 (b) is a diagram showing a part of the network after constant node splitting.
  • the topology learning unit 228b When the constant value of the arithmetic constant node shown in FIG. 67 (a) is continuously changed by the correction based on the error a predetermined number of times or more, the topology learning unit 228b performs as shown in FIG. 67 (b). , Create a new arithmetic constant node with the same constant value as the arithmetic constant node.
  • the topology learning unit 228 b creates (the number of outputs of the original arithmetic constant node ⁇ 1) number of new arithmetic constant nodes. Since the number of outputs of the arithmetic constant node shown in FIG. 67 (a) is 2, the topology learning unit 228b creates one new arithmetic constant node.
  • the topology learning unit 228 b creates an edge directed to a new arithmetic constant node from an operation node giving an input to the original arithmetic constant node. Furthermore, the topology learning unit 228 b creates an edge from each of the original or new arithmetic constant nodes to one of the operation nodes of the output destination of the original arithmetic constant node. The topology learning unit 228 b deletes the edge output from the original arithmetic constant node.
  • FIG. 68 is a flow chart showing a flow of processing performed by the topology learning unit 228b at constant node division.
  • topology learning unit 228 b determines, for each constant node, whether or not the constant value of the constant node has been continuously changed by a correction based on an error a predetermined number of times or more.
  • topology learning unit 228b creates a new constant node of the same constant value as the constant node in step S703.
  • the topology learning unit 228b creates (the number of outputs of the original arithmetic constant node-1) new constant nodes.
  • topology learning unit 228 b connects the edge input to the original constant node to the new constant node. Also, the topology learning unit 228 b creates an edge from each of the original or new arithmetic constant nodes to one of the operation nodes of the output destination of the original arithmetic constant node.
  • topology learning unit 228b does not perform the process of steps S703 and S705.
  • a constant node whose value does not determine is one of the causes of network instability.
  • the computation node 100 can create a stable network by excluding such a constant node by constant node splitting.
  • the network creation unit 222 converts GIMPLE into ATN based on the following rules.
  • the network creation unit 222 generates an arithmetic constant node having the right side value (R value) as a constant.
  • the network creation unit 222 also creates a virtual variable node of the left side value (L value).
  • the L-valued virtual variable node is a combination of a Write node, an Equal node, and an edge from the Write node to the Equal node. Furthermore, the network creation unit generates an edge from the constant node to the virtual variable node of L value, and connects the constant node and the virtual variable node of L value.
  • the operation node 320 corresponds to the constant value “1” on the right side.
  • Operation nodes 322 and 324 connected by an edge are virtual variable nodes of L value.
  • the network creation unit 222 creates a virtual variable node of R value.
  • the virtual variable node of R value is a combination of an Equal node, a Read node, and an edge from the Equal node to the Read node.
  • the network creation unit 222 also creates a virtual variable node of L value. Furthermore, the network creation unit 222 generates an edge from the virtual variable node of R value toward the virtual variable node of L value, and connects the virtual variable node of R value and the virtual variable node of L value.
  • Operation nodes 326 and 328 connected by an edge are virtual variable nodes of R value.
  • Operation nodes 330 and 332 connected by an edge are virtual variable nodes of L value.
  • ⁇ op> is a binary operator such as addition (+) or multiplication (*).
  • the network creation unit 222 creates an operation node (referred to as an op node) corresponding to the binary operator.
  • the network creation unit 222 also generates an arithmetic constant node or a virtual variable node corresponding to the R value, and a virtual variable node of the L value.
  • the network creation unit 222 connects the node of R value to the op node.
  • the network creation unit 222 connects the op node to the virtual variable node of L value.
  • the operation node 332 and the operation node 336 correspond to “1” and “2” on the right side of the instruction, respectively.
  • the operation node 336 is an op node.
  • Operation nodes 340 and 342 connected by edges are virtual variable nodes of L value.
  • the network creation unit 222 replaces the branch instruction “goto ⁇ label>;” in GIMPLE with an edge connected to a separately generated Equal node. That is, the network creation unit 222 creates a new edge connected to the Equal node having the label specified by the branch instruction.
  • the network creation unit 222 generates an Equal node having a label designated by GIMPLE, corresponding to the label “ ⁇ label>:;” in GIMPLE.
  • the network creation unit 222 sets the conditional branch instruction “if (R-value1 ⁇ op> R-value2) block1 else block2” (for example, if (1> 0) block1 else block2) in GIMPLE to a network element as follows: replace.
  • the network creation unit 222 creates an op node corresponding to the binary operator in the if statement. Also, the network creation unit 222 creates a node corresponding to the constant or variable in the if statement. The network creation unit 222 connects the output on the TRUE side of the op node to block1. Also, the network creation unit 222 connects the output on the FALSE side of the op node to block2.
  • virtual variable nodes and L variable virtual variable nodes are generated. Furthermore, the network creation unit 222 connects the node of R value to the op node. Also, the network creation unit 222 connects the op node to the virtual variable node of L value.
  • FIG. 3 A network element corresponding to the instruction “if (1> 0) block 1 else block 2” in GIMPLE is shown in FIG.
  • the operation node 344 and the operation node 346 correspond to “1” and “0” in the if statement, respectively.
  • the operation node 348 is an op node.
  • the output on the TRUE side of the operation node 348 is output to the first block 350.
  • the output on the FALSE side of the operation node 352 is output to the second block 352.
  • the network creation unit 222 first creates the start node N101.
  • the network creation unit 222 creates an edge from the start node N101 to the node N102.
  • the network creation unit 222 converts “ ⁇ D1283> :;” on the GIMPLE fourth line into the node N104 according to the label conversion rule.
  • the network creation unit 222 creates an edge from the node N102 toward the node N103.
  • the network creation unit 222 creates an edge from the node N104 toward the node N105 and the node N106.
  • the network creation unit 222 converts “if (i ⁇ 9)” in the GIMPLE sixth line into nodes N 109 to N 111 and an edge connecting these according to the conversion rule of the conditional branch.
  • the network creation unit 222 creates an edge from the node N108 toward the node N109 and the node N110.
  • the network creation unit 222 is an edge that connects “goto ⁇ D1283>” on the eighth line GIMPLE, which is performed when the determination result of the conditional branch is True according to the conversion rule of the branch, from the 0 side output of the node N111 to the node N104. Convert to
  • the network creation unit 222 executes “goto ⁇ D1283>” on the GIMPLE 12th line, which is performed when the judgment result of the conditional branch is False (that is, in the else statement) according to the conversion rule of the branch, 1 of the node N111.
  • the side output is converted into an edge connected to the node N112.
  • the network creation unit 222 converts “ ⁇ D1285> :;” on the GIMPLE 14th line into the node N112 according to the label conversion rule.
  • the network creation unit 222 creates the ans node N113 and creates an edge from the node N112 toward the ans node 113.
  • a program obtained by converting a program is simply referred to as a “network”, and a network connecting a plurality of computers by communication is referred to as a “communication network”. Furthermore, a virtual network configured on a communication network is called an "overlay network”.
  • calculations can be performed using a plurality of computers, and ultimately, communication of a plurality of computers distributed on a global scale It is also possible to perform ATN-type network calculations on the network.
  • FIG. 75 is a conceptual diagram for describing a computer processing system 1000 according to the second embodiment using such peer-to-peer technology.
  • Peers 1010.1 to 1010.n participating in the computing system 1000 according to the second embodiment. It is assumed that a tool (application software) for executing calculations of ATN-type network is installed in n. Such tools are available in each computer 1010.1 to 1010. Run in the background using n extra computing resources.
  • ATN type networks correspond to virtual communication networks (overlay networks) created on top of computer communication networks.
  • the nodes of the ATN network are one peer (node computer)
  • the edges of the ATN network are virtual links between peers
  • the agents of the ATN network are It is implemented as a packet (or data flow) communicated between peers.
  • the peers include an input peer that functions as an input node of the ATN format network and an output peer that functions as an output node.
  • the peers participating in the computing system 1000 are actually assigned nodes of the ATN type network at present, and participate in computation / learning "real nodes (real peers)" and nodes of the ATN type network currently. It is divided into unallocated “hidden nodes (hidden peers)".
  • a virtual link connecting real peers is called “real edge”
  • a link connecting real peers and hidden peers, or links connecting hidden peers is called “hidden edge”.
  • the agent transfers data related to forward propagation and back propagation shown in FIGS. 7, 53 and 54, “data transfer agent”, and “topology learning agent” related to topology modification shown in FIGS. 55 to 68.
  • inter-monitoring agent that performs inter-monitoring between peers.
  • the data transfer agent transfers data related to forward propagation and back propagation by exchanging agent information 134c and the deletion label list 134d among the information shown in FIG. Perform processing such as numerical correction.
  • the topology learning agent carries out processing for topology modification by switching between real peers and hidden peers, occasionally staying at a certain peer, and executing its own function program. At this time, if it is necessary to newly create a node, a special topology learning agent is multicasted from the real peer and relayed and forwarded through the real / hidden peer to search and identify the peer. Ru. The hidden peer found is newly assigned as a real peer.
  • Mutual monitoring agents perform mutual monitoring between adjacent peers to guarantee fault tolerance and free participation. This agent always goes back and forth between adjacent peers, searches for and identifies an alternative hidden peer when a real peer fails, and assigns the found hidden peer to the real peer.
  • the management node (hidden node) 1010. c, user node (hidden node) 1010. u, input node (real node) 1010. i, and an output node (real node) 1010. o is set.
  • Management node 1010. c is the user node 1010.
  • I / O nodes are assigned, and execution of the ATN format network is instructed to start.
  • the completion of the completed algorithm (network topology), Transfer to u.
  • each agent can manage the management node 1010. has address information c and manages the progress of the operation on the node 1010. Notify c.
  • Input node 1010. i is a management node 1010. Hold input data for learning received from c. Output node 1010. o holds training data for learning, and performs differential coefficient calculation based on error.
  • the nodes on the virtual network and the physical node computers do not necessarily have to correspond one to one, for example, on the virtual network.
  • the plurality of nodes may be realized by one physical computer.
  • the computing system 1000 of the second embodiment is not limited to server-client type (centralized type) such as grid computing as a method of distributed computing, but is peer-to-peer based on peer-to-peer communication. Implemented as a peer type (autonomous distributed type) application.
  • the computer processing system is a feature of peer-to-peer communication: 1) fault tolerance that another peer can take over even if some peer fails, 2) each node Has the advantages of free participation, where you can join and leave at any time, and 3) resource dispersability, where you do not have to put together a large amount of data in one place.
  • Examples of applications of the calculation processing apparatus include the following. (1) A compilation and execution system that self-repairs a program defect based on the ideal data given by the user (PC embedded software etc.) (2) A system that acquires an algorithm for finding out necessary information by searching from ambiguous information by learning (next-generation network communication etc.) (3) Robust knowledge transfer system (factory, hospital, etc.) that learns its own algorithm based on the teacher data given by the expert
  • the user gives the calculation processing apparatus a rough coded program as an initial program, and gives control output data by an expert as teacher data.
  • the computer can repeat program updating, and can create a program that represents the knowledge of a skilled person who could not be handed down because it is complicated and difficult to be clearly written.
  • the user can construct a machine system that operates stably using the created program.
  • Robot program that adapts to the environment to make optimal decisions, controls, and plans based on teacher data (care, exploration, disaster, space field, etc.) (5) System biology model (metabolism map, signal pathway, etc.) having the ability to estimate in vivo algorithms based on biometric data
  • 100 computing device 102 computer main unit, 104 monitor, 105 bus, 106 FD drive, 108 optical disk drive, 110 keyboard, 112 mouse, 122 memory, 124 hard disk, 128 communication interface, 131 initial program, 132 network creation program, 133 network Fix program, 134 network information, 134a node information, 134b connection information, 134c agent information, 134d deletion label list, 135 node operation definition, 136 learning variable, 210 input unit, 220 operation unit, 222 network creation unit, 224 format conversion unit , 226 calculation execution unit, 228 network update unit, 230 output unit, 240 storage unit, 1000 Calculation processing system, 1010.1 to 1010. n-node computer.

Abstract

 計算処理装置(100)は、モニタ(104)と、CPU(120)と、メモリ(122)と、ハードディスク(124)とを備える。ハードディスク(124)は、外部から入力された初期プログラム(131)と、ネットワーク作成プログラム(132)と、ネットワーク修正プログラム(133)と、ネットワーク情報(134)と、ノード演算定義(135)と、学習変数(136)とを格納する。CPU(120)は、ネットワーク作成プログラム(132)を実行し、初期プログラム(131)のアルゴリズム構造を表わすネットワークに関するネットワーク情報(134)を作成する。また、CPU(120)は、ネットワーク修正プログラム(133)を実行し、学習アルゴリズムを用いて、ネットワークによる計算結果に基づいてネットワーク情報(134)を修正する。

Description

計算処理システム、プログラム作成方法、および、プログラム作成プログラム
 本発明は、プログラムを作成する計算処理システム、プログラム作成方法、および、プログラム作成プログラムに関する。
 現在、普及しているコンピュータの多くは、ノイマン型コンピュータである。ノイマン型コンピュータは、プログラムをデータとして記憶装置に格納し、記憶装置に格納されたプログラムを順番に読み込んで実行する。
 一方、非ノイマン型のコンピュータも存在する。非ノイマン型のコンピュータとしては、データフロー型のコンピュータ(例えば、非特許文献1参照)や、ニューロコンピュータ(例えば、非特許文献2参照)がある。
 データフロー型コンピュータは、演算を表わすノードと、演算間のデータ転送関係を表わすノード間のリンクとを含むグラフの形でプログラムを表わす。データフロー型コンピュータが、ある処理の実行を開始するのは、その処理の前提となる処理が全て終了したときである。データフロー型コンピュータは、各処理の開始タイミングを制御するために、トークンを用いている。
 ニューロコンピュータは、ニューラルネット、すなわち、互いに結合する多数のユニットを用いて計算を行なう。各ユニットは、神経細胞をモデルにした単純な演算素子である。ニューロコンピュータは、望ましい出力(教師信号と呼ばれる)との誤差を小さくするようにユニット間の結合度の調整(学習と呼ばれる)を繰り返す。学習の繰り返しの結果、ニューロコンピュータは、正しい出力を出すようになる。
 また、プログラムの作成に関し、遺伝的プログラミングが知られている(例えば、非特許文献3参照)。遺伝的プログラミングでは、演算をあらわすノードおよびノードのトポロジー(tree構造など)によりプログラムを表わす。遺伝的プログラミングでは、このようなグラフ形式のプログラムを複数準備し、交叉、突然変異、淘汰などにより適切なグラフのふるいわけを行なうことで、適切なプログラムを作成する。
 (ピア・ツー・ピア技術と分散コンピューティング技術)
 なお、他の技術トレンドとして、インターネットにおける分散コンピューティング等を可能にするピア・ツー・ピア(P2P:Peer to Peer)技術がある。ピア・ツー・ピアのシステムにおいては、専用のサーバのない環境で、クライエント(たとえば、パーソナルコンピュータ)同士が分散的にデータの交換や処理を行う(たとえば、非特許文献5を参照)。ピア・ツー・ピア方式は、端末数が膨大になっても回線帯域などに余裕がある限り通信が可能という特徴がある。
 ここで、分散コンピューティングとは、情報処理手法の一種である。分散コンピューティングでは、プログラム、あるいはタスク(ジョブ)の個々の部分が同時並行的に複数のコンピュータ上で実行され、それらがネットワークを介して互いに通信しあう。膨大な計算資源を必要とする計算などをネットワークを介して複数のコンピュータを利用して行うことで、一台のコンピュータで計算するよりスループットを上げることが可能になる。
 ピア・ツー・ピア技術は、このような分散コンピューティングのための1つのアーキテクチャでありうる。
 (ネットワーク仮想化)
 ところで、一般に、通信ネットワークと呼ばれるシステムであれ、より特定的に、上述したようなピア・ツー・ピアシステムであれ、ネットワークは、物理的には、複数の情報通信機器(ノード)と、これらを相互接続する通信回線(リンク)から構成されている。
 しかしながら、近年では、実際には、直接接続されていない情報機器間の仮想的な通信回線を、物理的な通信回線とみなしてネットワークトポロジー(ネットワーク構成)の管理を行い、運用するシステムが実用化されている。このようなネットワークの仮想化については、たとえば、非特許文献4に記載がある。
 ここで、このように、実際には、直接接続されていない情報機器間の(仮想的な)通信回線を、物理的な通信回線とみなしてシステムトポロジーの管理を行い、運用するシステムは、オーバーレイ・システム、あるいはオーバレイ・ネットワークと呼ばれる。
村岡洋一、「並列処理[ソフトウェア講座 37]」、照晃堂、昭和61年4月10日、p.105 ATR国際電気通信基礎技術研究所編、「ATR先端テクノロジーシリーズ ニューラルネットワーク応用」、オーム社、平成7年7月20日、p.20-21 伊庭斉志、「遺伝的プログラミング」、東京電機大学出版局、1996年、p.18-30 Campbell, A.T., DeMeer, H.G., Kounavis, M.E., Miki, K., Vicente, J.B., Villela、 D., "A survey of programmable networks" Computer Communication Review 29(2), pp. 7-23,1999. Androutsellis-Theotokis, S., Spinellis, D., "A survey of peer-to-peer content distribution technologies" ACM Computing Surveys 36(4), pp. 335-371,2004.
 従来のノイマン型コンピュータが実行するプログラムは、ユーザが、自らの考えたコンピュータに実行させる処理のアルゴリズムをコード化して作成したものである。よって、プログラムは、ユーザが編集しない限り、変化しない。
 そのため、ノイマン型コンピュータは、ユーザが不完全なアルゴリズムに基づくプログラムしか用意できない場合には、ユーザが所望する正しい演算結果を出力できない。例えば、状況や環境が変化する場合には、ユーザは完全なアルゴリズムを作成することができず、したがって、コンピュータは、正しい演算結果を出力することができない。なお、ここでは、入力に対して正しい演算結果を出力するアルゴリズムを、「完全な」アルゴリズムと呼んでいる。
 データフロー型コンピュータも、ノイマン型コンピュータと同様の問題を有する。すなわち、データフロー型コンピュータも、完全なプログラムをユーザが用意できなければ、正しい演算結果を出力できない。
 一方、ニューロコンピュータは、学習により計算処理を変更していくため、ニューロコンピュータによる計算には、上述の問題は発生しない。しかしながら、ニューロコンピュータを構成するネットワークは、通常、積和計算とsigmoid関数等とを組み合わせた演算ノードだけで構成されたネットワークであり、パターン認識などの特定の問題にのみ適用されるのが普通である。ユーザにとっては、所望の演算結果を出力するニューラルネットワークがどのようなものであるかは、必ずしも明らかではない。
 また、遺伝的プログラミングでは、プログラムは変化するものの、通常それは個体数だけ用意されたプログラム間のオペレーションを通してである。したがって、遺伝的プログラミングにおけるプログラムの変化は、プログラムを実際使用する以前に予め行なっておくのが普通であり、実際にプログラムを使用している最中にアルゴリズムを変化させる方法にはなっていない。
 本発明は、上記のような問題を解決するためになされたものであって、ユーザが所望する演算結果を出力するプログラムを作成する計算処理システム、プログラム作成方法、および、プログラム作成プログラムを提供することを課題とする。
 本発明の1つの局面に従うと、計算処理システムであって、複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行する計算実行部を備え、複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、計算実行部の計算結果および学習アルゴリズムを用いてネットワークを修正するネットワーク更新部をさらに備える。
 好ましくは、複数の演算ノードは、アルゴリズムの流れを表わす制御値に対する計算を行なう演算ノードを含む。
 さらに好ましくは、複数の演算ノードは、四則演算に対応する演算ノードを含む。
 さらに好ましくは、ネットワーク更新部は、ネットワークに対し、演算ノードの変更、追加または削除処理を行なう。
 好ましくは、複数の演算ノードは、ノード変数を有する演算ノードを含み、ネットワーク更新部は、計算結果の教師値からの誤差を計算し、誤差に対するノード変数の寄与を計算し、寄与に基づいてノード変数を修正する。
 さらに好ましくは、ネットワーク更新部は、誤差に基づいてエネルギー誤差を計算し、寄与としてノード変数についてのエネルギー誤差の微係数を計算し、変数から微係数に学習係数をかけた値を引いて変数を更新する。
 さらに好ましくは、学習係数は、変数の更新により、エネルギー誤差が(1-η1p)倍(η1pは、0より大きく1未満の実数)になるように定められた値である。
 好ましくは、外部からの入力を受け付ける入力部と、入力部が受け付けるプログラムに基づいて、ネットワークを作成するネットワーク作成部とをさらに備える。
 さらに好ましくは、入力部が受け付けるプログラムは、高級言語で記述されたソースコードであり、ネットワーク作成部は、ソースコードを言語非依存の中間コードに変換し、中間コードに基づいてネットワークを作成する。
 さらに好ましくは、ネットワーク更新部は、出力値が所定の回数以上連続して変化しない演算ノードを一定の値を出力する定数ノードに変更する。
 さらに好ましくは、ネットワーク更新部は、複数の演算ノードの中から2以上の演算ノードをランダムに選択し、選択された演算ノードと接続される新たな演算ノードを生成する。
 さらに好ましくは、ネットワーク更新部は、複数の演算ノードの中から第1の演算ノードと第2の演算ノードをランダムに選択し、第2の演算ノードから第1の演算ノードへのブリッジを生成する。
 さらに好ましくは、ネットワーク更新部は、複数の演算ノードの中から演算ノードをランダムに選択し、選択された演算ノードについて分岐を作成する。
 さらに好ましくは、ネットワーク更新部は、各々一定の値を出力する複数の定数ノードを、結合法則により、1つの定数ノードに書き換える。
 さらに好ましくは、ネットワーク更新部は、所定の回数以上連続して修正を受けるノード変数をもつ演算ノードを分裂させる。
 本発明の他の局面に従うと、計算処理システムを用いたプログラム作成方法であって、計算処理システムが複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行するステップを備え、複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、計算処理システムが計算の結果および学習アルゴリズムを用いてネットワークを修正するステップをさらに備える。
 本発明のさらに他の局面に従うと、計算処理システムにプログラムを作成させるためのプログラム作成プログラムであって、計算処理システムに複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行させるステップを備え、複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、計算処理システムに計算の結果および学習アルゴリズムを用いてネットワークを修正させるステップをさらに備える。
 本発明によれば、プログラムに対応するネットワークを学習アルゴリズムを用いて修正する。その結果、ユーザが所望するプログラムを作成することができる。
 あるいは、本発明によれば、ユーザが不完全なアルゴリズムのプログラムしか作成できない場合であっても、ユーザが作成したプログラムを改変して、より完全なプログラムを作成することができる。
計算処理装置100が行なう処理の流れを模式的に示した図である。 本実施の形態に係る計算処理装置のハードウェア構成をブロック図形式で示す図である。 本実施の形態に係る計算処理装置の機能的構成をブロック図形式で示す図である。 初期プログラムの一例を示す図である。 図3に示すソースコードに対応するGIMPLE形式の中間コードを示す図である。 ソースコードに基づき作成するATNの一例を示す図である。 演算ノードの発火タイミングを説明するための図である。 ノード演算定義135の一例を示す図である。 ネットワーク情報134を示す図である。 学習変数136を示す図である。 図6のネットワークを用いた順伝播の第1演算過程を示す図である。 図6のネットワークを用いた順伝播の第2演算過程を示す図である。 図6のネットワークを用いた順伝播の第3演算過程を示す図である。 図6のネットワークを用いた順伝播の第4演算過程を示す図である。 図6のネットワークを用いた順伝播の第5演算過程を示す図である。 図6のネットワークを用いた順伝播の第6演算過程を示す図である。 図6のネットワークを用いた順伝播の第7演算過程を示す図である。 図6のネットワークを用いた順伝播の第8演算過程を示す図である。 図6のネットワークを用いた順伝播の第9演算過程を示す図である。 図6のネットワークを用いた順伝播の第10演算過程を示す図である。 図6のネットワークを用いた順伝播の第11演算過程を示す図である。 図6のネットワークを用いた順伝播の第12演算過程を示す図である。 図6のネットワークを用いた順伝播の第13演算過程を示す図である。 図6のネットワークを用いた順伝播の第14演算過程を示す図である。 図6のネットワークを用いた順伝播の第15演算過程を示す図である。 図6のネットワークを用いた順伝播の第16演算過程を示す図である。 図6のネットワークを用いた順伝播の第17演算過程を示す図である。 図6のネットワークを用いた順伝播の第18演算過程を示す図である。 図6のネットワークを用いた順伝播の第19演算過程を示す図である。 図6のネットワークを用いた順伝播の第20演算過程を示す図である。 図6のネットワークを用いた順伝播の第21演算過程を示す図である。 図6のネットワークを用いた順伝播の第22演算過程を示す図である。 図6のネットワークを用いた順伝播の第23演算過程を示す図である。 図6のネットワークを用いた順伝播の第24演算過程を示す図である。 図6のネットワークを用いた順伝播の第25演算過程を示す図である。 図6のネットワークを用いた順伝播の第26演算過程を示す図である。 図6のネットワークを用いた順伝播の第27演算過程を示す図である。 図6のネットワークを用いた順伝播の第28演算過程を示す図である。 図6のネットワークを用いた順伝播の第29演算過程を示す図である。 図6のネットワークを用いた順伝播の第30演算過程を示す図である。 図6のネットワークを用いた順伝播の第31演算過程を示す図である。 図6のネットワークを用いた順伝播の第32演算過程を示す図である。 図6のネットワークを用いた順伝播を示す図である。 図6のネットワークを用いた順伝播の第34演算過程を示す図である。 図6のネットワークを用いた順伝播の第35演算過程を示す図である。 図6のネットワークを用いた順伝播の第36演算過程を示す図である。 図6のネットワークを用いた順伝播の第37演算過程を示す図である。 図6のネットワークを用いた順伝播の第38演算過程を示す図である。 図6のネットワークを用いた順伝播の第39演算過程を示す図である。 図6のネットワークを用いた順伝播の第40演算過程を示す図である。 図6のネットワークを用いた順伝播の第41演算過程を示す図である。 チェインルールについて説明するための図である。 エラーの微係数の逆伝播について説明するための図である。 エラーのノード定数に関する微係数について説明するための図である。 定数化について説明するための図である。 定数化にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 変数生成について説明するための図である。 変数生成にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 ブリッジについて説明するための図である。 ブリッジにあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 分岐について説明するための図である。 分岐にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 Tupleマージについて説明するための図である。 Tupleマージにあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 ノードマージについて説明するための図である。 ノードマージにあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 定数ノード分裂について説明するための図である。 定数ノード分裂にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。 GIMPLEにおける命令"x=1;"に対応するネットワーク要素を示す図である。 GIMPLEにおける命令"x=y;"に対応するネットワーク要素を示す図である。 GIMPLEにおける命令"x=1+2;"に対応するネットワーク要素を示す図である。 GIMPLEにおける命令"if (1>0) block1 else block2"に対応するネットワーク要素を示す図である。 GIMPLE形式のコードの一例である。 図73に示すコードを変換して得られるATNを説明するための図である。 ピア・ツー・ピア技術を用いた計算処理システム1000を説明するための概念図である。
 以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部分には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
 [実施の形態1]
 (1.概要)
 本実施の形態に係る計算処理装置100は、外部から与えられたプログラム(以下、初期プログラムとも呼ぶ)を修正し、より適切な演算結果を出力するプログラムを作成する。計算処理装置は、大まかに分けて、次の3つの処理を行なう。
(1)プログラムのネットワークへの変換
(2)ネットワークを用いた計算の実行
(3)ネットワークの修正
 以下、各処理の概要を説明する。
 [(1)プログラムのネットワークへの変換]
 計算処理装置100は、与えられた初期プログラムに基づいて、ネットワーク型のプログラムを作成する。すなわち、計算処理装置100は、初期プログラムのアルゴリズムの構造を表現するネットワークを作成する。
 本実施の形態では、計算処理装置100は、初期プログラムをATN(Algorithmically Transitive Network;アルゴリズム可変ネットワーク)形式のネットワークに変換する。ATN形式のネットワークは、各々が演算処理を表わす複数の演算ノードと、複数の演算ノードのうちいずれか2つの演算ノードを各々つなぐ複数のエッジとにより、アルゴリズムの構造を表わす。エッジは、演算順序を表わす方向を持つ。
 [(2)ネットワークを用いた計算の実行]
 計算処理装置100は、作成したネットワークを用いて計算を実行する。すなわち、計算処理装置100は、入力値に対し、エッジで表わされる順序に従って、演算ノードによる演算を施す。
 本実施の形態では、計算処理装置100は、演算に必要な情報を持つシャトルエージェント(以下、単にエージェントと呼ぶ)に対して、各演算ノードにより演算を施す。演算ノードは、1つまたは複数のエージェントの入力を受け付け、所定の規則に基づいて、エッジから入力されたエージェントに対し演算を行ない、演算後のエージェントをエッジに出力する。演算ノードから出力されたエージェントは、エッジの行き先の演算ノードに入力される。エージェントの詳細、および、エージェントに対する処理規則の詳細については後述する。
 [(3)ネットワークの修正]
 計算処理装置100は、学習アルゴリズムを用いて、ネットワークを用いた計算結果に基づいてネットワークを修正する。すなわち、計算処理装置100は、ネットワークによる計算結果が、ユーザが所望する値に近づくように、ネットワークを修正する。より詳しくは、計算処理装置100は、演算ノードの定数値を変更する逆伝播学習と、ネットワークのトポロジーを変更するトポロジー学習とを行なう。逆伝播学習およびトポロジー学習の詳細については後述する。
 計算処理装置100は、(2)ネットワークを用いた計算の実行と、(3)ネットワークの修正とを繰り返すことにより、ユーザが所望する値を出力するネットワーク(したがって、プログラム)を作成することができる。
 計算処理装置100が行なう処理の全体の流れを、図1を参照して説明する。図1は、計算処理装置100が行なう処理の流れを模式的に示した図である。
 ステップS1において、計算処理装置100は、まず、入力されたプログラムを変換して初期ネットワークを用意する((1))。次に、計算処理装置100は、モードをForwardモードに設定する。Forwardモードにおいて、計算処理装置100は、ネットワークによる計算を実行する一方、ネットワークの変更処理は実行しない。そして、計算処理装置100は、演算の開始点にあるStartノードに入力を代入して、Startノードに計算を実行させる(Startノードを発火する)((2))。
 計算処理装置100は、Forwardモードにおいて、エージェントがしばらく動かない場合、つまり、全てのエージェントに対する演算が終了した場合に、ステップS2の処理を行なう。そうでない場合、計算処理装置100は、ステップS4以降の処理に進む。なお、計算処理装置100は、カウンタを用いて、エージェントがしばらく動かないかどうかの判断を行なう。
 ステップS2において、計算処理装置100は、まず、ansノードで、演算結果<x>、正しい結果(教師値)と演算結果との差に基づいて定まるエネルギー誤差E、エネルギー誤差Eの微係数D、Dを計算する((1))。これらの値の詳細については後述する。
 次に、計算処理装置100は、モードをBackwardに設定する((2))。Backwardモードにおいて、計算処理装置100は、逆伝播学習を実行する。
 計算処理装置100は、ステップS3において、演算結果が終了基準を満たしていたら処理を終了する。本実施の形態では、計算処理装置100は、エネルギー誤差Eが所定の値以下である場合に処理を終了する。演算結果が終了基準を満たしていない場合、計算処理装置100は、以降の処理を続ける。
 計算処理装置100は、Backwardモードにおいて、エージェントがしばらく動かない場合、つまり、逆伝播学習において全てのエージェントについての演算が終了した場合に、ステップS4の処理を行なう。そうでない場合、計算処理装置100は、ステップS5以降の処理に進む。なお、計算処理装置100は、カウンタを用いて、エージェントがしばらく動かないかどうかの判断を行なう。
 ステップS3において、計算処理装置100は、まず、ネットワーク更新部228は、学習係数ηを計算し、学習係数ηに基づいて、ノード変数{z}を更新する((1))。この処理の詳細については、後述する。
 次に、計算処理装置100は、トポロジー学習を実行する((2))。すなわち、CON,MKV,BRG,FRK,MGT,MGN,DIVなどの所定の規則に基づいて、演算ノードおよびエッジの生成あるいは削除を実行する。
 計算処理装置100は、ステップS5において、演算ノードによるエージェントオペレーションを実行する。また、計算処理装置100は、ステップS6において、全てのエージェントを次の演算ノードに移動する。1回のステップS5およびステップS6の処理が、演算の1タイムステップに相当する。
 ステップS5およびステップS6の処理の繰り返しにより、モードがForwardであるときは、ネットワークによる演算が進んでいく。モードがBackwardであるときは、逆伝播学習が進んでいく。ある回数これらの処理が繰り返されると、ステップS2あるいはステップS3の処理が実行される。
 計算処理装置100が、以上のように計算と学習の処理を繰り返すうちに、プログラムは、最急降下学習や自己組織化学習の原理により、ユーザの所望のデータを出力するものに変化していく。つまり、ユーザは、ユーザ自身がコードしたプログラムのアルゴリズムが自動的に改変されていくプログラム環境を手に入れることができる。
 (2.ハードウェア構成)
 本実施の形態に係る計算処理装置100のハードウェア構成について、図2を参照して説明する。図2は、本実施の形態に係る計算処理装置100の構成をブロック図形式で表す図である。
 計算処理装置100は、コンピュータ本体102と、表示装置としてのモニタ104と、入力装置としてのキーボード110およびマウス112とを備える。モニタ104、キーボード110、およびマウス112は、コンピュータ本体102とバス105を介して接続される。
 コンピュータ本体102は、フレキシブルディスク(Flexible Disc、以下「FD」と呼ぶ)ドライブ106と、光ディスクドライブ108と、CPU(Central Processing Unit)120と、メモリ122と、直接アクセスメモリ装置、たとえば、ハードディスク124と、通信インターフェイス128とを含む。これらの部品は、互いにバス105で接続されている。
 FDドライブ106は、FD116に情報を読み書きする。光ディスクドライブ108は、CD-ROM(Compact Disc Read-Only Memory)118等の光ディスク上の情報を読み込む。通信インターフェイス128は、外部とデータの授受を行なう。
 なお、CD-ROM118は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、DVD-ROM(Digital Versatile Disc)やメモリーカードなどでもよく、その場合は、コンピュータ本体102には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。また、バス105には、カセット形式の磁気テープを着脱自在に装着してアクセスする磁気テープ装置が接続されていてもよい。
 メモリ122は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む。
 ハードディスク124は、初期プログラム131と、ネットワーク作成プログラム132と、ネットワーク修正プログラム133と、ネットワーク情報134と、ノード演算定義135と、学習変数136とを格納する。
 初期プログラム131は、プログラム作成の基礎となるプログラムである。ハードディスク124は、ユーザが作成したプログラムを初期プログラム131として格納することができる。初期プログラム131は、FD116またはCD-ROM118等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス128を経由して供給されてもよい。
 ネットワーク作成プログラム132は、初期プログラム131に基づいて、初期プログラム131に対応するネットワークを作成する。また、ネットワーク作成プログラム132は、作成したネットワークに関するネットワーク情報134をハードディスク124に格納する。
 ネットワーク修正プログラム133は、ネットワーク作成プログラム132が作成したネットワークを修正する。より詳しくは、ネットワーク修正プログラム133は、ネットワーク情報134に基づく演算の実行結果と所望の値との間のエネルギー誤差が所定の閾値以上である場合は、ネットワーク情報134を修正した新たなネットワークを作成する。
 ネットワーク情報134は、ネットワーク作成プログラム132が作成したネットワークに関する情報、および、ネットワーク修正プログラム133がネットワークによる演算あるいはネットワークの修正の際に作成する情報を含む。
 ノード演算定義135は、ネットワークに含まれる演算ノードによる演算の規則を表わす。ノード演算定義135は、演算ノードを特定する情報(演算コード)、演算ノードへ入力されるエッジの数(入力数)などを含む。ノード演算定義135の詳細については、後述する。
 学習変数136は、ネットワークの修正に必要な情報である。学習変数136は、例えば、ユーザが計算結果として所望する教師値や、ネットワークによる演算結果と教師値との間の誤差に基づいて計算されるエネルギー誤差Eなどを含む。学習変数136の詳細については、後述する。
 ここで、ノード演算定義135、学習変数136については、ユーザが入力装置を利用して作成したものを用いることができる。ただし、これらは、FD116またはCD-ROM118等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス128を経由して供給されてもよい。
 また、ネットワーク作成プログラム132およびネットワーク修正プログラム133は、FD116、またはCD-ROM118等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス128を経由して供給されてもよい。
 演算処理装置として機能するCPU120は、メモリ122をワーキングメモリとして、上述した各プログラムに対応した処理を実行する。
 ネットワーク作成プログラム132およびネットワーク修正プログラム133は、上述の通り、CPU120により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、CD-ROM118、FD116等の記憶媒体に格納されて流通し、光ディスクドライブ108またはFDドライブ106等により記憶媒体から読み取られてハードディスク124に一旦格納される。または、計算処理装置100がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク124にコピーされる。そうしてさらにハードディスク124からメモリ122中のRAMに読み出されてCPU120により実行される。なお、ネットワーク接続されている場合には、ハードディスク124に格納することなくRAMに直接ロードして実行するようにしてもよい。
 図2に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、FD116、CD-ROM118、ハードディスク124等の記憶媒体に記憶されたソフトウェアである。
 (3.機能的構成)
 図3を参照して、本実施の形態に係る計算処理装置100の機能的構成について説明する。図3は、本実施の形態に係る計算処理装置100の機能的構成をブロック図形式で示す図である。
 計算処理装置100は、外部からデータを受け付ける入力部210と、演算部220と、演算部220の演算結果を外部に出力する出力部230と、記憶部240とを備える。
 演算部220は、記憶部240に格納されたデータに対して演算を実行する。演算部220は、ネットワーク作成部222と、計算実行部226と、ネットワーク更新部228とを含む。
 ネットワーク作成部222は、記憶部240に格納されている初期プログラム131に基づいて、ネットワーク情報134を作成する。ネットワーク作成部222は、形式変換部224を含む。形式変換部224は、初期プログラム131を、プログラムの記述言語に依存しない中間的な形式に変換する。
 計算実行部226は、ネットワーク情報134と、ノード演算定義135とに基づいて、ネットワークを用いた計算を実行する。計算実行部226が行なう処理の詳細については、後述する。
 ネットワーク更新部228は、学習アルゴリズムを用いて、ネットワーク情報134を修正する。より詳しくは、ネットワーク更新部228は、定数学習部228aと、トポロジー学習部228bとを含む。定数学習部228aは、学習変数136に含まれる誤差に基づいて、ネットワークに含まれる演算ノードの定数値を修正する。トポロジー学習部228bは、所定の規則に基づいて、随時、演算ノードの生成や削除、エッジの生成や削除などのネットワークの更新処理を実行する。ネットワーク更新部228が行なう処理の詳細については後述する。
 (4.ネットワークについて)
 ネットワーク作成部222が作成するネットワークについて、具体例を挙げて説明する。ここでは、初期プログラム131が、図4に示すC言語で記述されたソースコードであるとして説明する。図4は、初期プログラム131の一例を示す図である。ただし、初期プログラム131は、C言語以外のプログラム言語で記述されたソースコードであってもよい。初期プログラム131は、例えば、C、C++、Fortran、Ada、Objective-C、Java(登録商標)、Pascal、COBOLなどの高級言語で記述されていてもよい。
 ネットワークの作成にあたり、ネットワーク作成部222に含まれる形式変換部224は、ソースコードをGIMPLE形式の中間コードへ変換し、中間コードをネットワークに変換する。GIMPLE形式の中間コード(以下、単にGIMPLEと呼ぶ)は、ソースコードをGCC(GNU Complier Collection)の内部表現で記述したものである。図4に示すソースコードに対応するGIMPLE形式の中間コードを、図5に示す。
 ソースコードは、ソースコードを記述する言語に依存する。これに対し、GIMPLEは、高級言語に非依存、かつ、アーキテクチャに非依存である。したがって、ネットワーク作成部222は、さまざまな言語で記述されたソースコードを一意的なアルゴリズムによりネットワークに変換することができる。
 GIMPLEは、高級言語コンパイラによるコンパイル処理の中間結果である。すなわち、GIMPLEは、機械語のオブジェクトコード生成前のコードである。形式変換部224は、すでに知られている種々のGIMPLEの作成方法のうちの1つにしたがって、GIMPLEを作成することができる。例えば、形式変換部224は、GCC4.1以降の、gccの-fdump-tree-gimpleオプションを利用して、GIMPLEを作成することができる。
 続いて、ネットワーク作成部222は、GIMPLEに対応するネットワーク型のプログラムを作成する。本実施の形態では、ネットワーク作成部222は、ATN形式のネットワークを作成する。GIMPLE形式の中間コードからATN形式のネットワークを作成する規則については、後述する。なお、以下では、ATN形式のネットワークを、単にATNと呼ぶことがある。
 ただし、ATNを作成する方法は、上述のものに限られるわけではない。例えば、ネットワーク作成部222は、中間形式を介さずに初期プログラムからATNを作る特定の種類の初期プログラムに特化したプログラムを実行して、ATNを作成してもよい。あるいは、ネットワーク作成部222は、コンピュータに理解できる形で書かれたオブジェクトコードに基づいて、ATNを作成してもよい。あるいは、ユーザが手作業でATNを作成してもよい。
 以上の手順によりネットワーク作成部222が、ソースコードに基づき作成するATNの一例を、図6に示す。図6では、演算ノードは、文字(S、c、wなど)あるいは記号(=、+など)を囲む図形で表されている。図形内の文字あるいは記号は、ノードの演算種類を表わす。また、エッジは、実線の矢印または破線の矢印で表されている。実線の矢印は、算術値を含むエージェントの流れを表わす。破線の矢印は、制御値のみを含むエージェントの流れを表わす。図6中、枠500で囲まれた部分は、ループ演算処理を表わす。
 算術値は、実際の計算対象であり、それまでにシャトルエージェントが経た演算ノードによる演算結果を表わす。算術値は、任意の実数値をとる。算術値は、演算ノードに定められた演算規則にしたがって、変化する。例えば、y=x+1という演算を考える。この演算前の算術値はx、演算後の算術値はx+1である。
 制御値は、エージェントの存在の確からしさを表わす。本実施の形態では、制御値は、0以上1以下の値をとるものとする。計算実行中に行われる条件分岐による判定値が低いほど、その分岐に存在するエージェントの制御値は小さくなる。計算実行部226は、有限の時間およびメモリ資源で、計算を完了できるように、所定の閾値より小さい制御値を持つ分岐を削除する。
 (5.演算ノードおよびエージェント)
 ここから、ネットワークに含まれる演算ノード、ならびに、演算ノードの演算対象であるエージェントについて説明する。
 演算ノードは、個々のローカルな計算処理または計算処理によりできたデータを表わす。演算ノードを接続するエッジは、レジスタ転送を表わす。エージェントは、計算対象となるあるいは計算に用いられるデータを表わす。エージェントは、演算ノードにより計算の実行のたびに生成され、演算ノードは、生成されたエージェントに、計算結果を与える。
 エージェントによる計算は、入力ノードから出力ノードへの伝播により実現される。エージェントによる計算の原則は、次の2つである。
[原則1] 値の組(x,r)がエッジ付随のエージェントからエージェントへ伝播していく。
[原則2] エージェントの持つ2進ラベルベクトルが親エージェントから子エージェントへと遺伝する。
 ここで、値の組とは、算術値と制御値との組である。各エージェントは、値の組を持つ。演算ノードは、演算ノードに入力されたエージェントの値の組に対し、演算ノードの種類に応じた演算を施す。そして、演算ノードは、演算後の値の組を持つエージェントを出力する。演算ノードに入力されるエージェントを「親エージェント」、演算ノードが出力するエージェントを「子エージェント」と呼ぶ。
 また、2進ラベルベクトルとは、エージェントがどのような条件分岐をたどったかを表わす。2進ラベルベクトルは、エージェントが通った分岐点の個数の情報およびエージェントが各分岐点でTrueまたはFalseのいずれの分岐をたどったかについての情報を含む。以下、単に2進ラベルベクトルをラベルとも呼ぶ。
 ラベルは、ブール関数によって表わすことができる。つまり、ラベルは、各分岐点での判断結果を表わすブール変数を、エージェントが各分岐点を通った順番と対応させてならべたブール変数の積で表わすことができる。例えば、1つ目の分岐でFalseと判断され、2つ目の分岐がTrueと判断されたエージェントのラベルは、A=ba’と表せる。ここで、引用符(’)は、引用符の左にあるブール変数の否定を表わす。小文字の各アルファベット(a,b,…)またはその否定が、各分岐における判断結果を表わす。否定記号のついていない小文字は、判断結果がTrueであることを表わす。否定記号のついている小文字は、判断結果がFalseであることを表わす。より新しい分岐に対応するブール変数が、ラベルの左側に配置される。
 条件分岐を生じない演算ノードは、親エージェントのラベルと同じラベルを、子エージェントに与える。分岐を生じる演算ノードは、親エージェントのラベルに新たなブール変数を掛けた新たなラベルを子エージェントに与える。
 演算ノードが、親エージェントに対して演算を実行して子エージェントを出力する(以下、「演算ノードが発火する」と呼ぶ)タイミングについて、図7を参照して説明する。図7は、演算ノードの発火タイミングを説明するための図である。演算ノードの発火タイミングは、演算ノードに入力されるエージェントが1つか複数かによって、異なる。
 1入力の演算ノードは、次の規則1にしたがって発火する。
[規則1] (1入力演算の場合)演算ノードは、単独で発火する。
 この規則について、図7(A)を参照して説明する。図7(A)は、1入力2出力の演算ノード304がエージェントに対して行なう演算を説明するための図である。
 1入力の演算ノード304は、演算ノード302が出力した親エージェント402を受け取ると、単独で発火する。すなわち、演算ノード304は、親エージェント402を受け付けると、子エージェント404および子エージェント406を出力する。演算ノード304は、親エージェント402の値の組(x,r)に基づいて、子エージェント404および子エージェント406の値の組(X,R)を定める。
 また、親エージェント402の2進ラベルベクトルは、子エージェント404,406に遺伝する。図7を含む以下の図面では、2進ラベルベクトルを、エージェントを表わす丸の数および色で表わすこととする。図7(A)では、親エージェント402、子エージェント404,406の2進ラベルベクトルは、共通であり、これらを黒丸1つで表している。
 なお、ここでは、2出力の演算ノード304について説明したものの、出力数にかかわらず、上の規則1は成り立つ。
 一方、多入力の演算ノードは、次の規則2にしたがって発火する。
[規則2] (多入力演算の場合)演算ノードは、演算ノードに入力する2つのエージェントのラベルA,BがAB≠0を満たすならば、発火する。
 演算ノードに1つしかエージェントが入力されていないとき、その演算ノードは発火しない。
 ラベルの遺伝については、次の規則が成り立つ。
[規則3] 入力エージェントのラベルA,Bのブール積ABが、子エージェントに遺伝する。
 また、入力エージェントの発火後のラベルについては、次の規則が成り立つ。
[規則4] 演算ノードの発火後、入力エージェントのラベルA,Bは、それぞれ、AB’とA’Bに変わる。
[規則5] ラベル=0のエージェントは、発火不能になる。すなわち、ラベル=0のエージェントが演算ノードに入力しても、演算ノードは発火しない。
 これらの規則について、具体例を挙げて説明する。まず、簡単のため、等しいラベルをもつエージェントが演算ノードに入力する場合について、図7(B)を参照して説明する。図7(B)は、2入力2出力の演算ノード314が同一のラベルを有するエージェントに対して行なう演算を説明するための図である。
 演算ノード314は、演算ノード310および演算ノード312から、それぞれ、エージェント408およびエージェント410を受け取る。エージェント408およびエージェント410のラベルA、Bは、共に、ブール変数aである。(図では黒丸1つで表わす)である。よって、ラベルAB=a・a=a≠0である。したがって、演算ノード314は、規則2にしたがって、発火する。演算ノード314は、規則3にしたがって、子エージェントに、ラベルAB=a・a=aを与える。演算ノード314は、ラベルaを持つエージェント412およびエージェント414を、それぞれ、演算ノード316および演算ノード318に向けて出力する。上の計算から分かるように、一般的に、同一のラベルを持つエージェントが入力された演算ノードは、入力されたエージェントのラベルと同一のラベルを、子エージェントに与える。
 また、入力されたエージェントのラベルは、演算の終了後、a・a’=0となる。したがって、規則5にしたがって、入力されたエージェントは、演算の終了後、発火不能となる。一般的に、演算ノードに同一のラベルを持つエージェントが入力した場合、入力したエージェントは、演算ノードによる演算後に発火不能となる。
 次に、互いに異なるラベルを持つエージェントが演算ノードに入力する場合について、図7(C)を参照して説明する。図7(C)は、2入力1出力の演算ノード319が互いに異なるラベルを有するエージェントに対して行なう演算を説明するための図である。
 演算ノード319には、ラベルA=ba’(図では、出力側から入力側に向けて[黒、白]で表わす)を持つエージェントと、ラベルB=cba’(図では、出力側から入力順に向けて[黒、白、白]で表わす)を持つエージェントとが入力する。なお、図では、否定を上付きのバーを表わしている。
 なお、以下の図面でも、これらのエージェントを表したのと同様の規則でラベルを表わすこととする。すなわち、否定のないブール変数を白丸、否定のあるブール変数を黒丸で表わす。出力側から入力側へ向けて、対応する分岐が新しいものから順に配置した丸の列によって、ラベルを表わす。
 ラベルA,Bは、AB=ba’・cba’=cba’≠0を満たす。よって、規則2および規則3にしたがい、演算ノード319は、発火して、子エージェントに、ラベルAB=ba’・cba’=cba’([黒、白、白])を与える。つまり、互いに異なる長さのラベルを持つエージェントが入力した場合、演算ノードは、出力ノードに長い方のラベルを与える。
 ラベルBは、規則4にしたがって、演算後に、
 A’B=(ba’)’・cba’=(b’+a)cba’=0
となる。したがって、規則5によれば、ラベルBを持っていたエージェントは発火不能となる。つまり、長い方のラベルを持っていたエージェントは、発火不能となる。
 一方、ラベルAは、規則4にしたがって、演算後に、
 AB’=ba’・(cba’)’=ba’(c’+b’+a)=c’ba’
となる。このエージェントは、発火可能である。つまり、短い方のラベルを持っていたエージェントは、発火可能なエージェントとして残る。残ったエージェントは、待ち状態となる。つまり、残ったエージェントは、新たなエージェントが演算ノードに来るまで演算が施されない。図では、待ち状態にあるエージェントのラベルを斜線で表わす。左上から右下への斜線を引いた丸は、肯定のブール変数(白丸)の待ち状態に対応する。右上から左下への斜線を引いた丸は、否定のブール変数(黒丸)の待ち状態に対応する。
 また、発火可能なエージェントとして残ったエージェントの持つラベル(ここでは、AB’)を、「相補ラベル」と呼ぶ。このように呼ぶのは、発火可能なエージェントとして残ったエージェントの持つラベルは、子エージェントのラベルと対になっていることによる。
 なお、長さが2つ以上異なるラベルを持つエージェントに演算が施された場合、相補ラベルをブール変数であらわすためには、ブール変数“1”を導入する必要がある。ブール変数“1”は、対応する分岐の結果がTrueでもFalseでも構わないこと(Don’t care)を表わす。
 例えば、ラベルA=ba’を持つ第1のエージェントとラベルB=dcba’を持つ第2のエージェントとが演算ノードに入力することを考える。このとき、AB=dcba’は、0でないので、演算ノードは発火し、ABを出力する。
 第2のエージェントのラベルは、A’B=0になるので、第2のエージェントは、発火不能になる。一方、相補ラベルは、
 AB’=(ba’)・(dcba’)’=(ba’)・(d’+c’+b’+a)=d’1ba’+1c’ba’
となる。
 これらの規則2~5により、分岐があるネットワークについても適切に演算が実行される。エージェントに付したラベルにより、どのエージェントとどのエージェントとの間に演算を行なうべきかを管理できる。
 各種の演算ノードが行なう演算について、図8を参照して説明する。図8は、ノード演算定義135の一例を示す図である。図8を参照して、ノード演算定義135は、演算ノードの演算名、演算ノードに対応付けて一意に定められた1文字コード、演算ノードへ入力するエージェントの数を表わす入力数、算術/制御パラメータ、出力算術値X、出力制御値Rとを含む。
 算術/制御パラメータは、演算ノードが算術値に対する演算を行なう場合は「A(Arithmeticの頭文字)」の値をとる。また、算術/制御パラメータは、演算ノードが制御値に対する演算を行なう場合は「R(Regulatingの頭文字)」の値をとる。また、算術/制御パラメータは、演算ノードが算術値および制御値の両方に対する演算を行なう場合は「A/R」の値をとる。
 出力算術値Xは、演算ノードが出力するエージェントの算術値を示す。図8に示す表内の、x,x,xは、演算ノードに入力されるエージェントの算術値を示す。異なる2つの算術値を出力する演算ノードについては、2つの出力演算値をそれぞれX,Xで示している。
 出力制御値Rは、演算ノードが出力するエージェントの制御値を示す。図8に示す表内の、r,rは、演算ノードに入力されるエージェントの制御値を示す。異なる2つの制御値を出力する演算ノードについては、2つの出力制御値をそれぞれR,Rで示している。
 以下、各演算ノードについて、具体的に説明する。
 Startノードは、文字Sで表わされる。Startノードは、演算の開始点に配置される。Startノードの入力数は0である。Startノードから出力されるエージェントは、算術値を有しない。計算の開始時点では分岐がないため、Startノードは、出力するエージェントに対し、取りうる最大の制御値R=1を与える。
 Arithmetic const.(算術定数)ノードは、文字cで表わされる。Arithmetic const.ノードの入力数は1である。Arithmetic const.ノードは、算術値に対する演算を行なう。Arithmetic const.ノードは、入力されたエージェントの算術値によらず、出力するエージェントに対し、算術値として定数vを与える。vは、各演算ノードに対して設定されるノード変数の1つである。図6では、丸囲みのcの付近の数値(1.0や3.0)が、Arithmetic const.ノードのvを表わす。また、Arithmetic const.ノードは、制御値には演算を施さない。すなわち、Arithmetic const.ノードは、出力するエージェントに、制御値として、入力されたエージェントの制御値rを与える。
 Arithmetic const.ノードは、演算後の値の組(X,R)=(v,r)を1つまたは複数の演算ノードに対し出力する。なお、特別な演算ノードを除き、演算ノードは、一般に、演算後の値の組を1つまたは複数の演算ノードに対し出力することができる。
 Regulating const.(制御定数)ノードは、文字Cで表わされる。Regulating const.ノードの入力数は1である。また、Regulating const.の出力数は、2である。Regulating const.ノードは、制御値に対する演算を行なう。Regulating const.ノードは、入力されたエージェントの算術値によらず、0を算術値として出力するエージェントに与える。Regulating const.ノードは、2つの制御値R=sと、R=1-sとを出力する2つのエージェントのそれぞれに与える。ここで、sは、ノード変数の1つである。sは、0以上1以下の値をとる。Regulating const.ノードの出力数は、2に限られる。
 Equalノードは、文字=で表わされる。Equalノードの入力数は1である。Equalノードは、入力されたエージェントが有する値の組と同じ値の組を出力するエージェントに与える。Equalノードは、値の組を1つまたは複数のエージェントに対して出力する。つまり、Equalノードは、ある演算ノードの演算結果を、他の1つまたは複数の演算ノードに渡すことができる。なお、図6では、グラフの簡略化のため、複数のEqualノードをまとめて1つの丸囲みの=で表している。また、図6において、枠で囲まれたD****(D2533など)も、Equalノードを表わす。D****は、GIMPLEとの対応を示すために、便宜上、記したものである。実際に作成されるネットワークでは、D****で表わされている演算ノードは、Equalノードと変わりはない。
 Negativeノードは、文字nで表わされる。Equalノードの入力数は1である。Negativeノードは、入力するエージェントの算術値の符号を反転したものを、出力するエージェントに与える。
 Inverseノードは、文字iで表わされる。Inverseノードの入力数は1である。Inverseノードは、入力されたエージェントの算術値の逆数を出力するエージェントに与える。
 Subtractionノードは、文字-で表わされる。Subtractionノードの入力数は2である。Subtractionノードは、入力された2つのエージェントが持つ算術値の差を出力するエージェントに与える。また、Subtractionノードは、入力された2つのエージェントの制御値のうち小さい方を出力するエージェントに与える。Subtractionノードを出たエッジの存在確率は、この値を超えないからである。Subtractionノードがなるべく低い制御値を出力することで、分岐の追跡が容易になる。
 Divisionノードは、文字/で表わされる。Divisionノードの入力数は2である。Divisionノードは、入力された2つのエージェントの算術値の商を出力するエージェントに与える。また、Subtractionノードと同様、Divisionノードは、入力された2つのエージェントの制御値のうち小さい方を出力するエージェントに与える。
 Less thanノード(あるいは判断ノード)は、文字Lで表わされる。Less thanノードの入力数は、2である。Less thanノードは、制御値に対する演算を行なう。Less thanノードは、入力されたエージェントの算術値によらず、0を算術値として出力するエージェントに与える。Less thanノードは、2種類の制御値、すなわち、
 R=sig(κβ(x-x))・Min(r,r)と
 R=sig(κβ(x-x))・Min(r,r)と
を出力するエージェントに与える。ここで、sigは、シグモイド関数であり、
 sig(z)=1/{1+exp(-z)}
で定義される。また、κは定数、βはノード変数である。つまり、Less thanノードが出力するエージェントは、制御値の値によって2種類に区別される。各種類のエージェントは、1つであっても複数であってもよい。 Writeノードは、文字wで表わされる。Writeノードの入力数は、1である。Writeノードは、算術値および制御値に対し演算を行なう。Writeノードは、2つのエッジを出力する。Writeノードは、1つのエッジ(図6では、近辺に“0”が描かれたエッジ)の上のエージェントに対し、算術値を出力せず、制御値R=rのみを出力する。Writeノードは、もう1つのエッジ(図6では、近辺に“1”が描かれたエッジ)の上のエージェントに対し、X=xおよびR=rを出力する。
 Readノードは、文字rで表わされる。Readノードの入力数は、2である。Readノードは、制御値に対し演算を行なう。Readノードは、1つの入力エッジ(図6では、近辺に“0”が描かれたエッジ)の上のエージェントの算術値によらず、もう一つの入力エッジ(図6では、近辺に“1”が描かれたエッジ)の上のエージェントの算術値xを出力する。また、Readノードは、入力された2つの制御値のうち小さい方を出力する。
 Less thanノード、WriteノードおよびReadノード、ならびに制御値を用いることで、ネットワークは、if文などの条件分岐を表わすことができる。
 Additionノードは、文字+で表わされる。Additionノードの入力数は、2以上(図8では、2+で表している)である。Additionノードは、入力されたエージェントのすべての算術値の和をとる。また、Additionノードは、入力されたエージェントの制御値のうち最も小さなものを出力する。
 Multiplicationノードは、文字*で表わされる。Multiplicationノードの入力数は、2以上(図8では、2+で表している)である。Multiplicationノードは、入力されたすべてのエージェントの算術値の積をとる。また、Additionノードは、入力されたエージェントの制御値のうち最も小さなものを出力する。
 このように演算ノードは、プログラム中の各種の演算、例えば、四則演算に対応する演算ノードを含む。演算ノードは、従来のニューラルネットワークで用いられた積和あるいはシグモイド計算以外の計算に対応する演算ノードに限られない。このように本実施の形態では、様々な演算ノードによって、ネットワークを表わす。そのため、ネットワークは、汎用性を有し、様々なプログラムを表わすことができる。
 (6.データセット)
 ネットワーク、エージェント、および演算ノードについての説明に続いて、記憶部240が格納するネットワーク情報134および学習変数136について詳しく説明しておく。
 まず、ネットワーク情報134について、図9を参照して説明する。図9は、ネットワーク情報134を示す図である。図9を参照して、ネットワーク情報134は、ノード情報134aと、エッジ情報134bと、エージェント情報134cと、削除ラベルリスト134dとを含む。
 ノード情報134aは、ネットワークに含まれる各演算ノードについて定義される。ノード情報は、演算コードと、ノード変数と、ネットワークによる演算結果と教師値との間のエネルギー誤差Eのノード変数に関する微係数と、ノードにおける発火で作られた値の組の集合と、ノードからエッジへのポインタと、出力情報と、エッジのインデックスとを含む。
 演算コードは演算ノードの種類を表わす。演算コードとしては、演算名あるいは1文字コードを用いることができる。誤差Eのノード変数に関する微係数は、後述するネットワークの定数学習にあたって用いられる。
 ノードからエッジへのポインタは、ノードに接続されているエッジを表わす。出力情報は、ノードに接続されているエッジが、演算ノードが出て行くエッジであるかどうかを表わす2値変数である。出力情報がTrueの値をとる場合、エッジは演算ノードから出て行く。出力情報がFalseの値をとる場合、エッジは演算ノードに入る。エッジのインデックスは、判断ノードなど2種類の値を出力する演算ノードが出力するエッジに対して定義される0か1の値である。インデックスは、エッジ上のエージェントがもつ出力値の種類を表わす。
 エッジ情報134bは、各エッジがどのように演算ノードを接続するかを表わす。エッジ情報134bは、エッジの始点に接続される演算ノード(始点ノード)へのポインタと、エッジの終点に接続される演算ノード(終点ノード)へのポインタとを含む。
 エージェント情報134cは、エージェントのもつ各種情報に関し、ネットワークを用いた演算の実行中に作成される。エージェント情報134cは、値の組と、2進ラベルベクトルと、エネルギー誤差Eの値の組に関する微係数と、子エージェントの値の組をこのエージェントの値の組に関して偏微分したものと、子エージェントの値の組を出力ノードの変数に関して偏微分したものと、親/子エージェントへのポインタと、エージェントが所在するエッジへのポインタとを含む。
 各微係数および各偏微分係数は、後述するネットワークの定数学習にあたって用いられる。親/子エージェントへのポインタは、エージェント間の系図、すなわち、演算の分岐構造を表わす。親/子エージェントへのポインタは、後述する逆伝播学習時に必要となる。
 次に、学習変数136について図10を参照して説明する。図10は、学習変数136を示す図である。学習変数136は、ネットワークの更新に関し、ネットワークの構造とは無関係に与えられる。学習変数136は、学習係数、1回のパスによる学習率、教師値、エネルギー誤差E、および、E内係数を含む。これらの変数についての詳細は、ネットワーク更新処理の説明の際に説明する。
 (7.順伝播)
 ここから、ATNを用いた計算について、詳細に説明する。ATNを用いた計算は、エージェントに対し、矢印に沿った順序で演算ノードによる演算が施されることで、実現される。この性質のため、以下、ATNを用いた計算を、順伝播(Forward Propagation)とも呼ぶ。
 計算実行部226は、次の規則にしたがって、順伝播を実行する。なお、規則1から規則5については、すでに説明している。
[規則1] (1入力演算の場合)エージェントは、単独で発火する。
[規則2] (多入力演算の場合)演算ノードは、演算ノードに入力する2つのエージェントのラベルA,BがAB≠0を満たすならば、発火する。
[規則3] 入力エージェントのラベルA,Bのブール積ABが、子エージェントに遺伝する。
[規則4] 演算ノードの発火後、入力エージェントのラベルA,Bは、それぞれ、AB’とA’Bに変わる。
[規則5] ラベル=0のエージェントは、発火不能になる。すなわち、ラベル=0のエージェントが演算ノードに入力しても、演算ノードは発火しない。
[規則6] 0に近い制御値を持つエージェントは、‘発火不能’となり、そのラベルは削除ラベルリストに格納される。ここでは、r<rth=0.01のエージェントが、発火不能になるとする。ただし、rthの値は、これに限られるものではない。
[規則7] 判断ノードLは、子エージェントに新しいブール変数を加える。
[規則8] 最終的な演算結果が入力されるansノードに到着したエージェントのラベルは、削除ラベルリストに格納される。
[規則9] 新たに削除ラベルリストに登録されたラベルの否定がネットワーク内のすべてのラベルに掛けられる。
[規則10] 判断ノードLで生成されるエージェントのラベルには新しいブール変数が掛けられる。
 以下、図11~図51を参照して、順伝播について具体的に説明する。図11~図51は、それぞれ、図6に示すネットワークを用いた順伝播の演算過程を示す図である。なお、図11~図51では、判断ノード、writeノードおよびreadノードの入力あるいは出力の識別子(0,1)を示していないが、これらは、図6に示したものと同様である。
 図11を参照して、順伝播の開始にあたり、計算実行部226は、ノードN1に値の組(…,1)をもつエージェントを出力させる。以下、値の組(x,r)をもつエージェントを、エージェント(x,r)と表わす。ここで、x=…は、算術値の値がないことを示す。
 図12を参照して、エージェント(…,1)を受け取ったノードN2は、エージェント(0,1)を出力する。
 図13を参照して、次の演算ステップ(以下、単にステップ)で、エージェント(0,1)を受け取ったノードN2は、ノードN3に向けてエージェント(0,1)を出力する。また、ノードN2は、ノードN13に向けてエージェント(…,1)を出力する。
 図14を参照して、次のステップで、ノードN4は、ノードN9に向けてエージェント(0,1)を出力し、ノードN5に向けてエージェント(0,1)を出力する。また、ノードN13は、ノードN14に向けてエージェント(0,1)を出力する。
 図15を参照して、次のステップで、ノードN14は、ノードN15に向けてエージェント(0,1)を出力する。また、ノードN14は、ノードN17に向けてエージェント(…,1)を出力する。ノードN9に到着したエージェント(0,1)は、発火可能ではあるが、相手のエージェントがノードN9に到着しないので、待ち状態になる。ノードN5に到着したエージェントも、同様に、待ち状態になる。
 図16を参照して、次のステップで、ノードN15は、ノードN11にエージェント(0,1)を、ノードN18にエージェント(0,1)を、それぞれ出力する。また、ノードN17は、ノードN18にエージェント(…,1)を、ノードN19にエージェント(…,1)を、それぞれ出力する。
 図17を参照して、次のステップで、ノードN18に2つのエージェントが入力され、ノードN18は、発火する。これらのエージェントのラベルのブール積は、0でないためである。ノードN18は、ノードN20に向けて、エージェント(0,1)を出力する。演算が施されたエージェントは、発火不能となる。発火不能となったエージェントは、以降の演算に影響しないので、図示しない。また、図17に示すステップで、ノードN19は、ノードN20に向けて、エージェント(1.5,1)を出力する。ノードN11に入力されているエージェントは、待ち状態になる。
 図18を参照して、次のステップで、ノードN20に2つのエージェントが入力され、ノードN20は、発火する。これらのエージェントのラベルのブール積は、0でないためである。ノードN20は、ノードN21にエージェント(…,1)を出力し、ノードN22にエージェント(…,0)を出力する。ノードN20は、2つの子エージェントに互いに異なるブール変数を付加する。
 ここで、エージェント(…,0)は、規則5にしたがって、発火不能となり、そのラベル[黒、黒]が削除ラベルリストに格納される。また、規則4にしたがって、発火可能な各エージェント(ノードN5、ノードN9、ノードN15の手前のエージェント)のラベルに新しいブール変数が追加される。これらのエージェントのラベルは、[黒、白]となる。規則9にしたがって、削除ラベルリストに格納されたラベルの否定がネットワーク内の全てのラベルに掛けられて、ノードN5、ノードN9、ノードN15で待機中のエージェントのラベルが変化する。
 図19を参照して、次のステップで、ノードN21は、ノードN5およびノードN6に対し、エージェント(…,1)を出力する。
 図20を参照して、次のステップで、ノードN5には、2つのエージェントが入力され、ノードN5は発火する。ノードN5は、エージェント(0,1)をノードN7に出力する。また、ノードN6は、ノードN7にエージェント(3,1)を出力する。
 図21を参照して、次のステップで、ノードN7に入力されていた2つのエージェントは発火し、ノードN7は、ノードN8にエージェント(3,1)を出力する。
 図22を参照して、次のステップで、ノードN8は、ノードN4にエージェント(3,1)を、ノードN10およびノードN11にエージェント(…,1)をそれぞれ出力する。
 図23を参照して、次のステップで、ノードN4に2つのエージェントが入力され、ノードN4は発火する。ノードN4は、ノードN9にエージェント(3,1)を出力する。ここで、以前にノードN9で待機していたエージェント(0,1)は、発火不能となる。また、ノードN10は、ノードN12にエージェント(1,1)を出力する。また、ノードN11には、2つのエージェントが入力し、ノードN11は発火する。ノードN11は、ノードN12にエージェント(0,1)を出力する。
 図24を参照して、次のステップで、ノードN12には2つのエージェントが入力し、ノードN12は発火する。ノードN12は、ノードN16にエージェント(1,1)を出力する。
 図25を参照して、次のステップで、ノードN16は、ノードN15にエージェント(1,1)を、ノードN17にエージェント(…,1)をそれぞれ出力する。
 図26を参照して、次のステップで、ノードN17は、ノードN18にエージェント(…,1)を、ノードN19にエージェント(…,1)をそれぞれ出力する。また、ノードN15は、ノードN18にエージェント(1,1)を出力する。
 図27を参照して、次のステップで、ノードN18には2つのエージェントが入力し、ノードN18は発火する。ノードN18は、ノードN20にエージェント(1,1)を出力する。また、ノードN19は、ノードN20にエージェント(1.5,1)を出力する。
 図28を参照して、次のステップで、ノードN20に入力されていた2つのエージェントは、発火する。ノードN20は、ノードN21にエージェント(…,0.8)を出力し、ノードN22にエージェント(…,0.2)を出力する。ノードN20は、2つの子エージェントに互いに異なるブール変数を付加する。ここで、r=0.2>rthであるため、エージェント(…,0.2)は、発火不能とならない。
 図29を参照して、次のステップで、ノードN21は、ノードN6にエージェント(…,0.8)を出力する。また、ノードN22は、ノードN9にエージェント(…,0.2)を出力する。
 図30を参照して、次のステップで、ノードN5は、ノードN7にエージェント(3,0.8)を出力する。ノードN6は、ノードN7に、エージェント(3,0.8)を出力する。
 また、ノードN9に入力していた2つのエージェントのラベルのブール積、すなわち、ラベル[黒、白]と、ラベル[黒、白、黒]のブール積は0でない。したがって、ノードN9は、発火する。
 規則4にしたがって、短い方のラベルを持つエージェントは、相補ラベルを持つ発火可能なエージェントとなる。短い方のラベルを持つエージェントは、発火したものに限られない。ネットワーク内にあり、短い方のラベルを持つエージェントは、すべて、相補ラベルを持つ発火可能なエージェントとなる。
 図31を参照して、次のステップで、ノードN9は、ノードN23に、エージェント(3,0.2)を出力する。ノードN23は、ansノードであるので、規則8が適用され、ノードN23に入力されたエージェントのラベルが削除ラベルリストに格納される。
 以下、同様の処理により、計算実行部226は、演算を進める。演算の各途中経過を、図32~図51に示す。図51は、ノードN23に、3つ目の演算結果が出力されたときのエージェントの状態を示す。計算実行部226は、ネットワーク中を移動するエージェントがなくなった時点で順伝播演算を終了する。ここでは、計算実行部226は、3つ目の演算結果が出力された時点で、順伝播を終了するものとして、以降の説明を進める。
 この演算結果から分かるように、計算実行部226は、計算結果として、複数の値の組(x,r)を出力する。ここで、lはエージェントを表わす添え字である。計算実行部226は、算術値の制御値による重み付き平均<x>を最終的な計算結果として出力する。この場合、計算実行部226は、<x>=(3×0.2+6×0.64+9×0.16)/(0.2+0.64+0.16)=5.88を最終的な計算結果として出力する。
 (8.ネットワークの更新-その1;定数学習)
 以上のようにして求めた計算結果は、ユーザの所望する値(教師値)と異なることがある。特に、ユーザが、ラフにコードしたプログラムを初期プログラム131とした場合は、普通、順伝播による計算結果は、教師値とは異なる。そこで、ネットワーク更新部228は、計算結果と教師値との間のエネルギー誤差が所定の値より大きい場合、ネットワークを修正する。
 エネルギー誤差は、ansノードに出力されたx,rの関数として表わされる。本実施の形態では、計算実行部226が、次の式(1)にしたがって、エネルギー誤差Eを計算する。
Figure JPOXMLDOC01-appb-M000001
 ここで、tは教師値である。また、μ、νは、エラー係数である。エラー係数は、予め定められた、あるいは、ユーザが適宜定める定数である。第1項は、計算結果<x>と教師値tとの誤差の2乗を表わす。計算結果がtに近いほど、エネルギー誤差が小さくなる。第2項および第3項は、制御値の総和が1であることが好ましいことを反映して、設けられている。制御値の総和が1でない場合は、削除された分岐が多すぎるか少なすぎることを意味し、正確に演算が行なわれていない可能性がある。計算実行部226は、エネルギー誤差Eが、所定の値より大きい場合、エネルギー誤差Eをネットワーク更新部228に渡す。
 ネットワーク更新部228は、エネルギー誤差Eに基づき、学習アルゴリズムを用いてネットワークを修正する。ネットワーク更新部228は、例えば、ニューラルネットワークにおける誤差逆伝播学習やヘッブ学習と類似の学習アルゴリズムを用いてネットワークを修正する。
 本実施の形態では、ネットワーク更新部228は、誤差逆伝播学習と類似の方法で、ネットワークに含まれる各演算ノードのノード変数{z}={v、s、β}を修正する。つまり、ネットワーク更新部228は、誤差に対する各演算ノードのノード変数{z}の寄与を求め、寄与に基づいて{z}を更新する。
 本実施の形態では、ネットワーク更新部228は、寄与としてノード変数についての誤差の微係数を求め、最急降下法により{z}を更新する。つまり、ネットワーク更新部228は、次の式(2)にしたがって、{z}を更新する。式(2)において、ηは、学習係数である。Dは、Eのzについての微係数である。
Figure JPOXMLDOC01-appb-M000002
 ネットワーク更新部228は、各ノードのDzを、エネルギー誤差の微係数の逆伝播に基づいて求める。エネルギー誤差の微係数の逆伝播とは、エネルギー誤差の親エージェントの変数についての微係数が、エネルギー誤差の子エージェントの変数についての微係数に基づいて計算できる性質のことを指す。ネットワーク更新部228は、ネットワークの出力側の演算ノードから入力側の演算ノードにむけて、順番に、各演算ノードについてエネルギー誤差の微係数を計算する。ネットワーク更新部228は、親/子エージェントへのポインタ(系図)に基づいて、どのような順番でエネルギー誤差の微係数を求めるかを決定する。
 逆伝播の基礎は、チェインルールである。チェインルールとは、ある関数の入力変数に関する微分係数は、終端ノードから変数に至る全経路についてのノードの偏微分の積和に等しい、という法則である。
 チェインルールについて、図52を参照して説明する。図52は、チェインルールについて説明するための図である。図52に示すグラフにおいて、z=axである。また、y=a+z=a+ax=a(1+x)である。yのaについての微係数は、次の式(*)のように表わせる。
∂y/∂a=1+x=1+x・1=∂y/∂a+∂z/∂a・∂y/∂z …(*)
 ここで最右辺の第1項は、実線の経路についての偏微分の積である。また、最右辺の第2項は、破線の経路についての偏微分の積である。したがって、チェインルールが成り立っていることが分かる。なお、式(*)から類推できるように、チェインルールは、合成関数の偏微分法を言い換えたものである。したがって、チェインルールは、常に成り立つ。
 さて、チェインルールをエネルギー誤差の微係数(以下、簡単のため「エラーの微係数」とも呼ぶ)に適用すると、エラーの微係数が逆伝播することが分かる。すなわち、エラーの親エージェントのx,rについての微係数は、エラーの子エージェントのX,Rについての微係数とノード演算の偏微分とに基づいて計算できる。より詳しくは、親エージェントのx(もしくはr)についてのエラーの微係数Dxl(もしくはDrl)は、子エージェントのX,Rについてのエラーの微係数とX,Rのx(もしくはr)についての偏微分の積和を全ての子エージェントについて足し合わせたものである。
 このことを、図53に即して説明する。図53は、エラーの微係数の逆伝播について説明するための図である。図53の親エージェントのx,rについてのエラーの微係数DxlおよびDrlは、それぞれ、次の式(3)(4)のように表せる。
Figure JPOXMLDOC01-appb-M000003
Figure JPOXMLDOC01-appb-M000004
 この性質により、ネットワーク更新部228は、ネットワークの出力側のエージェントから入力側のエージェントに向かって、順に、すべてのエージェントについてエラーのx,rについての微係数を求めることができる。
 なお、ノード演算の偏微分(∂X/∂x、∂R/∂x、∂X/∂r、∂R/∂r)は、各演算ノードについて個別に求めることができる。本実施の形態では、計算実行部226が、順伝播の際に、ノード演算の偏微分を求める。この方法では、逆伝播の際にネットワーク更新部228が偏微分を計算するよりも、効率よく偏微分を計算することができる。また、プログラムも全体として簡略化できる。
 さらに、チェインルール(あるいは合成関数の偏微分法)に基づけば、エラーのノード変数{z}についての微係数は、子エージェントの微係数とノード演算の偏微分から計算できる。より詳しくは、ノードのzについてのエラーの微係数Dは、そのノードの発火で生成された子エージェントのX,Rについてのエラーの微係数とX,Rのzについての偏微分の積和を全ての子エージェントについて足し合わせたものである。
 このことを、図54に即して説明する。図54は、エラーのノード定数に関する微係数について説明するための図である。図54の算術定数ノードのvについてのエラーの微係数Dは、次の式(5)のように表せる。
Figure JPOXMLDOC01-appb-M000005
 なお、sをノード変数として持つ制御定数ノード、βをノード変数として持つ判断ノードについても同様に、ノード変数についてのエラーの微係数Dを求めることができる。
 ネットワーク更新部228は、以上の手順により、可変ノード、すなわち、ノード変数を持つ演算ノードの全てについて、ノード変数についてのエラーの微係数Dを求める。そして、ネットワーク更新部228は、式(2)に求めたDを代入し、各可変ノードのノード変数zを更新する。
 ところで、学習によるネットワークの更新が適切に行なわれるためには、式(2)における学習係数ηを、適切な値に定める必要がある。発明者による試行の結果、学習係数ηは、学習をむやみに速くしないように定めることが好ましいことが分かった。すなわち、1回の{z}の更新により、エネルギー誤差Eの値が急激に変化しないように定めるべきことがわかった。
 そこで、本実施の形態では、ネットワーク更新部228は、学習係数ηを1回の{z}の更新により、Eが(1-ηlp)倍されるように定める。ここで、ηlpは、1回のパスによる学習率を表し、0より大きく1未満の定数である。
 上の条件は、次の式(6)で表わされる。
Figure JPOXMLDOC01-appb-M000006
 式(6)における右辺の変形は、テーラー展開による。
 式(6)を変形することで、学習係数ηについて次の式(7)が得られる。
Figure JPOXMLDOC01-appb-M000007
 ネットワーク更新部228は、式(7)にしたがって、学習係数ηを求めればよい。すなわち、ネットワーク更新部228は、式(7)にしたがい、エネルギー誤差E、および、逆伝播により求めたDに基づいて、各可変ノードについて学習係数ηを求める。
 ηlpの値は、予め定められたものであってもよいし、ユーザが定めてもよい。発明者による試行によれば、好ましいηlpの値は、0.5~0.7程度である。ただし、ηlpの値は、これに限られるものではない。
 (9.ネットワークの更新-その2;トポロジー学習)
 ネットワーク更新部228は、上述のノード変数の更新に加え、ネットワークの構造を変化させることでネットワークを更新することができる。すなわち、ネットワーク更新部228に含まれるトポロジー学習部228bは、演算ノードの追加や削除、エッジのつなぎかえを行なって、ネットワークを更新することができる。このようなノードの生成・削除やエッジのつなぎかえは、ネットワークトポロジーの改変をもたらし、アルゴリズムを変化させる。この更新をトポロジー学習と呼ぶ。
 トポロジー学習部228bは、以下の規則にしたがって、ネットワークの構造を変化させる。なお、トポロジー学習部228bは、以下の全ての規則にしたがうのではなく、一部の規則にしたがって、ネットワークの構造を変化させてもよい。
 <定数化>
 発火で計算される(X,R)値が長い間変化しないノードは、算術定数ノード(c)または制御定数ノード(C)に変わる。この規則を定数化(Constantification、CON)と呼ぶ。定数化により、計算結果に影響を与えることなく、アルゴリズムを簡略化することができる。
 定数化について、図55を参照して説明する。図55は、定数化について説明するための図である。図55(a)は、定数化前のネットワークの一部を示す図である。図55(b)は、定数化後のネットワークの一部を示す図である。
 トポロジー学習部228bは、図55(a)に示すAdditionノード(+)が、所定の回数以上連続して、出力するエージェントに同じ算術値を与えている場合、ネットワークを図55(b)に示す状態に変更する。すなわち、トポロジー学習部228bは、Additionノード(+)を算術定数ノード(c)に変更する。また、トポロジー学習部228bは、Additionノードに入力していたエッジのうち、過去のr値の和が最小であるものを、算術定数ノードに入力するエッジとする。トポロジー学習部228bは、Additionノードに入力していた残りのエッジを削除する。
 定数化にあたりトポロジー学習部228bが行なう処理の流れについて図56を参照して説明する。図56は、定数化にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS101において、各演算ノードについて、ノード情報134aに含まれる値の組の集合(x[]、r[])に基づいて、出力値(算術値あるいは制御値)の組が所定の個数以上連続して同じ値をもつかどうか判断する。
 演算ノードの出力値(算術値あるいは制御値)の組が所定の個数以上連続する同じ値を持つ場合(ステップS101においてYES)、トポロジー学習部228bは、ステップS103において、演算ノードを算術定数ノード(c)あるいは制御定数ノード(C)に変更する。
 トポロジー学習部228bは、ステップS105において、演算ノードに入力する入力エッジのうち過去の制御値rの和が最小であるものを抽出する。
 トポロジー学習部228bは、ステップS107において、ステップS105で抽出されなかった入力エッジを削除する。
 一方、演算ノードの出力値の組が所定の個数以上連続する同じ値を持たない場合(ステップS101においてNO)、トポロジー学習部228bは、ステップS103からステップS107の処理を行なわない。
 <変数生成>
 ランダムに選ばれたノードの関数として新しいノードが作られる。この規則を変数生成(Making Variable、MKV)と呼ぶ。変数生成によれば、計算結果に影響を与えることなく、アルゴリズムを複雑化することができる。したがって、変数生成によって、アルゴリズムが不適切な均衡状態に陥ることを防ぐことができる。また、変数生成によれば、定数化などによりネットワークの規模が縮小することを防ぎ、ネットワークの規模を保つことができる。
 変数生成について、図57を参照して説明する。図57は、変数生成について説明するための図である。図57(a)は、変数生成前のネットワークの一部を示す図である。図57(b)は、変数生成後のネットワークの一部を示す図である。
 トポロジー学習部228bは、2つの演算ノードをランダムに選ぶ。図57(a)には、選ばれた2つの演算ノードを示す。そして、トポロジー学習部228bは、図57(b)に示すAdditionノード(+)を生成する。また、トポロジー学習部228bは、選んだ2つの演算ノードからAdditionノード(+)に入力するエッジを生成する。
 なお、トポロジー学習部228bは、3つ以上の演算ノードを選んで、選んだ演算ノードをAdditionノードと接続してもよい。また、トポロジー学習部228bは、Additionノード以外の演算ノードを生成してもよい。
 変数生成にあたりトポロジー学習部228bが行なう処理の流れについて図58を参照して説明する。図58は、変数生成にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS201において、複数の演算ノードをランダムに選ぶ。
 トポロジー学習部228bは、ステップS203において、新たな演算ノードを生成する。ここで、トポロジー学習部228bは、ステップS201で選ばれた演算ノードの個数と同じ入力数をもつ演算ノードを生成する。
 トポロジー学習部228bは、ステップS205において、ステップS201で選んだ各演算ノードから、ステップS203で生成した演算ノードに入力するエッジを生成する。
 <ブリッジ>
 ランダムに選ばれたノードaは、ランダムに選ばれたノードbを使って(a+0*b)に変わる。この処理をブリッジ(Bridge、BRG)と呼ぶ。
 ブリッジについて、図59を参照して説明する。図59は、ブリッジについて説明するための図である。図59(a)は、ブリッジ処理前のネットワークの一部を示す図である。図59(b)は、ブリッジ処理後のネットワークの一部を示す図である。
 トポロジー学習部228bは、演算ノードaと演算ノードbとをランダムに選ぶ。図59(a)に、演算ノードaと演算ノードbとを示す。
 トポロジー学習部228bは、図59(b)に示すように、ノード変数v=0.0をもつ算術定数ノード(c)を生成し、演算ノードbから算術定数ノードに向かうエッジを生成する。また、トポロジー学習部228bは、算術定数ノードおよび演算ノードbからの出力を受けるMultiplicationノード(*)を作成する。さらに、トポロジー学習部228bは、Multiplicationノードおよび演算ノードaからの出力を受けるAdditionノードを作成する。トポロジー学習部228bは、演算ノードaの接続先であった演算ノードを、Additionノードの接続先とする。
 Additionノードの出力は、a+0*b=aである。したがって、ブリッジ処理によれば、計算結果を変化させることなく、アルゴリズムを複雑化することができる。したがって、ブリッジ処理によって、アルゴリズムが不適切な均衡状態に陥ることを防ぐことができる。また、ブリッジ処理によれば、定数化などによりネットワークの規模が縮小することを防ぎ、ネットワークの規模を保つことができる。
 ブリッジにあたりトポロジー学習部228bが行なう処理の流れについて図60を参照して説明する。図60は、ブリッジにあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS301において、演算ノードaと演算ノードbとをランダムに選ぶ。
 トポロジー学習部228bは、ステップS303において、ノード変数v=0.0をもつ算術定数ノード(c)を生成する。
 トポロジー学習部228bは、ステップS305において、演算ノードbからcノードに向かうエッジを生成する。
 トポロジー学習部228bは、ステップS307において、Multiplication(*)ノードを生成する。
 トポロジー学習部228bは、ステップS309において、演算ノードb、cから*ノードへ向かうエッジを生成する。
 トポロジー学習部228bは、ステップS311において、Addition(+)ノードを生成する。
 トポロジー学習部228bは、ステップS313において、演算ノードa、*から+ノードへ向かうエッジを生成する。
 <分岐>
 ランダムに選ばれたノードaは、ノードb、c間の判定により分岐する。ただし、ノードb、cは、各々、過去の制御値rの和が、ノードaの過去の制御値rの和よりも大きいノードの中からランダムに選ばれたノードである。この処理を分岐(Fork、FRK)と呼ぶ。
 分岐について、図61を参照して説明する。図61は、分岐について説明するための図である。図61(a)は、分岐処理前のネットワークの一部を示す図である。図61(b)は、分岐処理後のネットワークの一部を示す図である。
 トポロジー学習部228bは、演算ノードaを選ぶ。また、トポロジー学習部228bは、過去の制御値rの和が演算ノードaの過去の制御値rの和よりも大きいノードの中からランダムに演算ノードbと演算ノードcとを選ぶ。図61(a)に、演算ノードaと演算ノードbと演算ノードcとを示す。
 トポロジー学習部228bは、図61(b)に示すように、演算ノードbと演算ノードcとからの入力を受ける判断ノード(L)を生成する。また、トポロジー学習部228bは、演算ノードaの出力および判断ノードの第1の出力を受ける第1のReadノード(r)を生成する。トポロジー学習部228bは、演算ノードaの出力および判断ノードの第2の出力を受ける第2のReadノード(r)を生成する。さらに、トポロジー学習部228bは、演算ノードaの接続先であった各演算ノードに、第1のReadノードおよび第2のReadノードの演算結果を入力するエッジを生成する。
 分岐処理によれば、計算結果を変化させることなく、アルゴリズムを複雑化することができる。したがって、分岐処理によって、アルゴリズムが不適切な均衡状態に陥ることを防ぐことができる。また、分岐処理によれば、定数化などによりネットワークの規模が縮小することを防ぎ、ネットワークの規模を保つことができる。
 分岐にあたりトポロジー学習部228bが行なう処理の流れについて図62を参照して説明する。図62は、分岐にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS401において、演算ノードaをランダムに選ぶ。
 トポロジー学習部228bは、ステップS403において、過去の制御値rの和が演算ノードaの過去の制御値rの和よりも大きいノードの中からランダムに演算ノードbと演算ノードcとを選ぶ。
 トポロジー学習部228bは、ステップS405において、演算ノードbと演算ノードcとからの入力を受ける判断ノード(L)を生成する。すなわち、トポロジー学習部228bは、判断ノードを生成し、演算ノードbおよび演算ノードcから生成した判断ノードに向かうエッジを生成する。
 トポロジー学習部228bは、ステップS407において、第1のrノードおよび第2のrノードを生成する。
 トポロジー学習部228bは、ステップS409において、演算ノードaを第1のrノードおよび第2のrノードに接続する。すなわち、トポロジー学習部228bは、演算ノードaから第1のrノードおよび第2のrノードに向かうエッジを生成する。
 トポロジー学習部228bは、ステップS411において、判断ノードを第1のrノードおよび第2のrノードに接続する。すなわち、トポロジー学習部228bは、判断ノードから第1のrノードおよび第2のrノードに向かうエッジを生成する。
 トポロジー学習部228bは、ステップS413において、第1のrノードおよび第2のrノードから演算ノードaへのエッジを生成する。
 トポロジー学習部228bは、ステップS415において、元々演算ノードaが出力していたエッジを削除する。
 <Tupleマージ>
 2つの縦つながりのAdditionノードまたはMultiplicationノードは、結合法則により合体する。2つのAdditionノードが「縦つながり」とは、2つのAdditionノードがエッジで直接接続されていることを意味する。この処理をTupleマージ(Merge Tuple;MGT)と呼ぶ。Tupleマージにより、計算結果に影響を与えることなく、アルゴリズムを簡略化することができる。
 Tupleマージについて、図63を参照して説明する。図63は、Tupleマージについて説明するための図である。図63(a)は、Tupleマージ前のネットワークの一部を示す図である。図63(b)は、Tupleマージ後のネットワークの一部を示す図である。
 図63(a)に示すように縦つながりの2つのAdditionノードがあると、トポロジー学習部228bは、2つのAdditionノードのうち1つのAdditionノードを削除する。また、トポロジー学習部228bは、削除されたAdditionノードに接続されていたエッジを、残りのAdditionノードに接続する。なお、トポロジー学習部228bは、縦つながりの2つのMultiplicationノードに対しても、同様の処理を行なう。
 Tupleマージにあたりトポロジー学習部228bが行なう処理の流れについて図64を参照して説明する。図64は、Tupleマージにあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS501において、1つの+ノード(または*ノード)を選択する。
 トポロジー学習部228bは、ステップS503において、ステップS501で選択した+ノード(または*ノード)の接続先に+ノード(または*ノード)があるかどうか判断する。
 接続先に+ノード(または*ノード)がある場合(ステップS503においてYES)、トポロジー学習部228bは、ステップS505において、ステップS501で選択した+ノード(または*ノード)を削除する。
 トポロジー学習部228bは、ステップS507において、削除した+ノード(または*ノード)に入力していたエッジを、接続先の+ノード(または*ノード)に接続する。
 接続先に+ノード(または*ノード)がない場合(ステップS503においてNO)、トポロジー学習部228bは、ステップS505およびステップS507の処理を行なわない。
 <ノードマージ>
 AdditionノードまたはMultiplicationノードに入力する複数の定数ノードは、結合法則により合体する。この処理をノードマージ(Merge Node,MGN)と呼ぶ。ノードマージにより、計算結果に影響を与えることなく、アルゴリズムを簡略化することができる。
 ノードマージについて、図65を参照して説明する。図65は、ノードマージについて説明するための図である。図65(a)は、ノードマージ前のネットワークの一部を示す図である。図65(b)は、ノードマージ後のネットワークの一部を示す図である。
 図65(a)に示すように1つのAdditionノードに入力する定数ノードが2つあると、トポロジー学習部228bは、図65(b)に示すように、2つの定数ノードを、2つの定数ノードの定数値を足し合わせた定数値を持つ1つの定数ノードに置き換える。
 同様に、トポロジー学習部228bは、1つのAdditionノードに3つの定数ノードがあるとき、Additionノードに入力する定数ノードを、Additionノードに入力する全ての定数ノードの定数値を足し合わせた定数値を持つ1つの定数ノードに書き換える。なお、トポロジー学習部228bは、縦つながりの2つのMultiplicationノードに対しても、同様の処理を行なう。
 ノードマージにあたりトポロジー学習部228bが行なう処理の流れについて図66を参照して説明する。図66は、ノードマージにあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS601において、1つの+ノード(または*ノード)を選択する。
 トポロジー学習部228bは、ステップS603において、ステップS601で選択した+ノード(または*ノード)に複数の定数ノードが入力するかどうか判断する。
 複数の定数ノードが入力する場合(ステップS603においてYES)、トポロジー学習部228bは、ステップS605において、入力する定数ノードの定数値の和(または積)を計算し、計算で得られた値を新たな定数値とする。
 トポロジー学習部228bは、ステップS607において、新たな定数値をもつ新たな定数ノードを生成する。また、トポロジー学習部228bは、新たな定数ノードからステップS601で選択した+ノード(または*ノード)に向かうエッジを生成する。さらに、トポロジー学習部228bは、元々の定数ノードに入力するエッジを、新たな定数ノードにつなぎかえる。
 トポロジー学習部228bは、ステップS609において、元々の定数ノードを削除する。
 複数の定数ノードが入力しない場合(ステップS603においてNO)、トポロジー学習部228bは、ステップS605からステップS609の処理を行なわない。
 <定数ノード分裂>
 算術定数ノードまたは制御定数ノードは、その定数値がいつまでも定まらない場合は分裂する。この処理を、定数ノード分裂(Division、DIV)と呼ぶ。
 定数ノード分裂について、図67を参照して説明する。図67は、定数ノード分裂について説明するための図である。図67(a)は、定数ノード分裂前のネットワークの一部を示す図である。図67(b)は、定数ノード分裂後のネットワークの一部を示す図である。
 図67(a)に示す算術定数ノードの定数値が、所定の回数以上連続して、誤差に基づく修正による変更を受けているとき、トポロジー学習部228bは、図67(b)に示すように、その算術定数ノードと同じ定数値の新たな算術定数ノードを作る。トポロジー学習部228bは、(もとの算術定数ノードの出力数-1)個の新たな算術定数ノードを作る。図67(a)に示す算術定数ノードの出力数は2であるので、トポロジー学習部228bは、1つの新たな算術定数ノードを作る。
 また、トポロジー学習部228bは、もとの算術定数ノードに入力を与える演算ノードから、新たな算術定数ノードに向かうエッジを作成する。さらに、トポロジー学習部228bは、もとのあるいは新たな算術定数ノードの各々から、もとの算術定数ノードの出力先の演算ノードの1つに向かうエッジを作成する。トポロジー学習部228bは、もとの算術定数ノードから出力するエッジを削除する。
 定数ノード分裂にあたりトポロジー学習部228bが行なう処理の流れについて図68を参照して説明する。図68は、定数ノード分裂にあたりトポロジー学習部228bが行なう処理の流れを示すフローチャートである。
 トポロジー学習部228bは、ステップS701において、各定数ノードについて、定数ノードの定数値が、所定の回数以上連続して、誤差に基づく修正による変更を受けているかどうかを判断する。
 定数ノードの定数値が連続して変更を受けている場合(ステップS701においてYES)、トポロジー学習部228bは、ステップS703において、その定数ノードと同じ定数値の新たな定数ノードを作る。トポロジー学習部228bは、(もとの算術定数ノードの出力数-1)個の新たな定数ノードを作る。
 トポロジー学習部228bは、ステップS705において、元の定数ノードに入力するエッジを新たな定数ノードにも接続する。また、トポロジー学習部228bは、もとのあるいは新たな算術定数ノードの各々から、もとの算術定数ノードの出力先の演算ノードの1つに向かうエッジを作成する。
 定数値が連続して変化しない場合(ステップS701においてNO)、トポロジー学習部228bは、ステップS703およびステップS705の処理を行なわない。
 値が定まらない定数ノードは、ネットワークの不安定さの一因である。定数ノード分裂により、このような定数ノードを除くことで、計算処理装置100は、安定なネットワークを作成することができる。
 (10.GIMPLEからATNへの変換)
 説明を省略していた、GIMPLEからATNへの変換の詳細について、ここで説明する。ネットワーク作成部222は、以下の規則に基づいて、GIMPLEをATNに変換する。
 <代入(R値が定数)>
 ネットワーク作成部222は、GIMPLEにおいて左辺の変数に右辺の定数を代入する命令"L-value=R-value;"(例えば、x=1;)を、次のようにネットワーク要素(演算ノードおよびエッジ)に置き換える。
 ネットワーク作成部222は、右辺値(R値)を定数として持つ算術定数ノードを生成する。また、ネットワーク作成部222は、左辺値(L値)の仮想変数ノードを生成する。L値の仮想変数ノードは、Writeノード、Equalノード、および、WriteノードからEqualノードに向かうエッジを組み合わせたものである。さらに、ネットワーク作成部は、定数ノードからL値の仮想変数ノードに向かうエッジを生成し、定数ノードとL値の仮想変数ノードとを接続する。
 GIMPLEにおける命令"x=1;"に対応するネットワーク要素を図69に示す。演算ノード320は、右辺の定数値“1”に対応する。エッジで接続された演算ノード322および演算ノード324が、L値の仮想変数ノードである。
 <代入(R値が変数)>
 ネットワーク作成部222は、GIMPLEにおいて左辺の変数に右辺の変数を代入する命令"L-value=R-value;"(例えば、x=y;)を、次のようにネットワーク要素に置き換える。
 ネットワーク作成部222は、R値の仮想変数ノードを生成する。R値の仮想変数ノードは、Equalノード、Readノード、および、EqualノードからReadノードに向かうエッジを組み合わせたものである。また、ネットワーク作成部222は、L値の仮想変数ノードを生成する。さらに、ネットワーク作成部222は、R値の仮想変数ノードからL値の仮想変数ノードに向かうエッジを生成し、R値の仮想変数ノードとL値の仮想変数ノードとを接続する。
 GIMPLEにおける命令"x=y;"に対応するネットワーク要素を図70に示す。エッジで接続された演算ノード326および演算ノード328が、R値の仮想変数ノードである。エッジで接続された演算ノード330および演算ノード332が、L値の仮想変数ノードである。
 <2項演算>
 ネットワーク作成部222は、GIMPLEにおける2項演算命令"L-value=R-value1 <op> R-value2;"(例えば、x=1+2;)を、次のようにネットワーク要素に置き換える。なお、ここで、<op>は、加法(+)、乗法(*)などの2項演算子である。
 ネットワーク作成部222は、2項演算子に対応する演算ノード(opノードと呼ぶ)を生成する。また、ネットワーク作成部222は、R値に対応する算術定数ノードあるいは仮想変数ノード、ならびに、L値の仮想変数ノードを生成する。さらに、ネットワーク作成部222は、R値のノードをopノードに接続する。また、ネットワーク作成部222は、opノードをL値の仮想変数ノードに接続する。
 GIMPLEにおける命令"x=1+2;"に対応するネットワーク要素を図71に示す。演算ノード332および演算ノード336が、それぞれ、命令の右辺の“1”,“2”に対応する。演算ノード336は、opノードである。エッジで接続された演算ノード340および演算ノード342が、L値の仮想変数ノードである。
 <分岐>
 ネットワーク作成部222は、GIMPLEにおける分岐命令"goto<label>;"を、別途生成されるEqualノードに接続するエッジで置き換える。すなわち、ネットワーク作成部222は、分岐命令が指定するラベルをもつEqualノードに接続する新たなエッジを生成する。
 <ラベル>
 ネットワーク作成部222は、GIMPLEにおけるラベル"<label>:;"に対応して、GIMPLEが指定するラベルを持つEqualノードを生成する。
 <条件分岐>
 ネットワーク作成部222は、GIMPLEにおける条件分岐命令"if (R-value1 <op> R-value2) block1 else block2"(例えば、if (1>0) block1 else block2)を、次のようにネットワーク要素に置き換える。
 ネットワーク作成部222は、if文内の2項演算子に対応するopノードを生成する。また、ネットワーク作成部222は、if文内の定数または変数に対応するノードを生成する。ネットワーク作成部222は、opノードのTRUE側の出力をblock1に接続する。また、ネットワーク作成部222は、opノードのFALSE側の出力をblock2に接続する。
 あるいは仮想変数ノード、ならびに、L値の仮想変数ノードを生成する。さらに、ネットワーク作成部222は、R値のノードをopノードに接続する。また、ネットワーク作成部222は、opノードをL値の仮想変数ノードに接続する。
 GIMPLEにおける命令"if (1>0) block1 else block2"に対応するネットワーク要素を図72に示す。演算ノード344および演算ノード346が、それぞれ、if文内の“1”,“0”に対応する。演算ノード348は、opノードである。演算ノード348のTRUE側の出力は、第1のブロック350に出力される。演算ノード352のFALSE側の出力は、第2のブロック352に出力される。
 GIMPLEからATNの変換について、具体例を挙げて説明する。ここでは、図73に示すGIMPLEをATNに変換する例を説明する。図73に示すGIMPLEを変換して得られるATNを図74に示す。ただし、図74には、図の簡単のため、制御値の流れのみを図示している。
 ネットワーク作成部222は、まず、スタートノードN101を生成する。
 ネットワーク作成部222は、GIMPLE3行目の"i=0;"を、代入(R値が定数)の変換規則により、ノードN102、ノードN103、およびこれらを結ぶエッジに変換する。ネットワーク作成部222は、スタートノードN101からノードN102に向かうエッジを生成する。
 ネットワーク作成部222は、GIMPLE4行目の"<D1283>:;"を、ラベルの変換規則により、ノードN104に変換する。ネットワーク作成部222は、ノードN102からノードN103に向かうエッジを生成する。
 ネットワーク作成部222は、GIMPLE5行目の"i=i+1:;"を、代入(R値が変数)の変換規則により、ノードN105~ノードN108およびこれらを接続するエッジに変換する。ネットワーク作成部222は、ノードN104からノードN105およびノードN106に向かうエッジを生成する。
 ネットワーク作成部222は、GIMPLE6行目の"if(i<9)"を、条件分岐の変換規則により、ノードN109~ノードN111およびこれらを接続するエッジに変換する。ネットワーク作成部222は、ノードN108からノードN109およびノードN110に向かうエッジを生成する。
 ネットワーク作成部222は、分岐の変換規則により、条件分岐の判断結果がTrueである場合に行なわれるGIMPLE8行目の"goto<D1283>"を、ノードN111の0側出力からノードN104に接続するエッジに変換する。
 ネットワーク作成部222は、分岐の変換規則により、条件分岐の判断結果がFalseである場合に行なわれる(つまりelse文の中にある)GIMPLE12行目の"goto<D1283>"を、ノードN111の1側出力からノードN112に接続するエッジに変換する。
 ネットワーク作成部222は、GIMPLE14行目の"<D1285>:;"を、ラベルの変換規則により、ノードN112に変換する。
 最後に、ネットワーク作成部222は、ansノードN113を生成し、ノードN112からansノード113に向かうエッジを生成する。
 [実施の形態2]
 実施の形態1では、ネットワークに変換されたプログラムの実行とネットワークの修正・学習は、図2に示すような単一のコンピュータで実行されるものとして説明した。
 しかしながら、前述したような「分散コンピューティング技術」、より特定的には、「ピア・ツー・ピア技術」を利用すれば、このようなネットワークに変換されたプログラムの実行とネットワークの修正・学習を、複数台のコンピュータによる分散処理として実行することが可能となる。
 なお、以下、実施の形態2においては、プログラムを変換したものは、単に「ネットワーク」と呼び、複数のコンピュータを通信で結ぶネットワークについては、「通信ネットワーク」と呼んで区別する。さらに、通信ネットワーク上に構成される仮想的なネットワークは、「オーバーレイネットワーク」と呼ぶ。
 すなわち、以下で説明するように実施の形態2の計算処理システムでは、複数台のコンピュータを使用して計算を実行することができ、究極的には、地球規模に分散する複数台のコンピュータの通信ネットワーク上でATN形式のネットワークの計算を実行することも可能である。
 図75は、このようなピア・ツー・ピア技術を用いた実施の形態2の計算処理システム1000を説明するための概念図である。
 実施の形態2の計算処理システム1000に参加するピア(ノードコンピュータ)1010.1~1010.nには、ATN形式のネットワークの計算の実行のためのツール(アプリケーション・ソフト)がインストールされているものとする。このようなツールは、各コンピュータ1010.1~1010.nの余剰分の計算資源を使ってバックグラウンドで動作する。
 このような計算の実行にあたり、ATN形式のネットワークは、コンピュータの通信ネットワークの上に作られる仮想的な通信ネットワーク(オーバーレイネットワーク)に対応する。最も典型的な例では、ATN形式のネットワークのノードは1つのピア(ノードコンピュータ)として、ATN形式のネットワークのエッジはピア間で張られる仮想的なリンクとして、また、ATN形式のネットワークのエージェントはピア間で通信されるパケット(もしくはデータフロー)として実現される。
 このとき、ピアの中には、ATN形式のネットワークの入力ノードとして機能する入力ピアと、出力ノードとして機能する出力ピアとが含まれる。
 計算処理システム1000に参加するピアは、実際に、現在においてATN形式のネットワークのノードが割り付けられ、計算・学習に参加する『実ノード(実ピア)』と、現在はATN形式のネットワークのノードは割り付けられていない『隠れノード(隠れピア)』に分けられる。実ピア同士を繋ぐ仮想リンクを『実エッジ』、実ピアと隠れピア、もしくは隠れピア同士を繋ぐリンクを『隠れエッジ』と呼ぶ。
 またエージェントは、図7、図53、図54に示した順伝播・逆伝播に関わるデータの転送を行なう『データ転送エージェント』と、図55~68に示したトポロジー改変に関わる『トポロジー学習エージェント』と、ピア間の相互監視を行う『相互監視エージェント』に分けられる。
 データ転送エージェントは、実ピア間で、図9で示した情報のうち、エージェント情報134cと削除ラベルリスト134dをやりとりすることにより、順伝播・逆伝播に関わるデータの転送、定数学習のための定数値補正等の処理を行なう。
 トポロジー学習エージェントは、実ピアおよび隠れピアの間を行き来し、時折あるピアに留まって、それ自身が持つ機能プログラムを実行することにより、トポロジー改変のための処理を行う。この時、新たにノードを生成させる必要が生じた場合には、ピアの検索・識別のために、特殊なトポロジー学習エージェントが実ピアからマルチキャストされ、それが実/隠れピアを介して中継転送される。見つかった隠れピアが新たに実ピアとして割り当てられる。
 相互監視エージェントは、耐故障性や自由参加性を保証するために、隣接ピア間の相互監視を行なう。このエージェントは常時、隣接ピア間を行き来し、ある実ピアが動作しなくなった場合、代わりとなる隠れピアの検索・識別を行ない、見つかった隠れピアを実ピアへ割り当てる。
 計算処理システム1000中には、特別なノードとして、管理ノード(隠れノード)1010.c、ユーザノード(隠れノード)1010.u、入力ノード(実ノード)1010.i、および出力ノード(実ノード)1010.oが設定される。
 管理ノード1010.cはユーザノード1010.uが提出する課題を受けて、入出力ノードを割り当て、ATN形式のネットワークの実行開始を指令する。また、学習結果に基づき、ATN形式のネットワークの計算の実行の終了を指令すると同時に、出来上がったアルゴリズム(ネットワーク・トポロジー)の吸い上げと、ユーザノード1010.uへの転送を行なう。なお、ここで、図示はしていないが、これらの処理を可能にするため、各エージェントは、管理ノード1010.cのアドレス情報を持ち、演算の経過を管理ノード1010.cに通知する。
 入力ノード1010.iは、管理ノード1010.cから受け取った学習のための入力データを保持する。出力ノード1010.oは学習のための教師データを保持し、かつ誤差に基づく微係数計算を行なう。
 以上のような構成により、実施の形態1では1台のコンピュータにより実行されていた処理について、実施の形態2では、「ATN形式のネットワークの計算処理」は、複数台のノードコンピュータにより分散して実行されることとなる。
 ただし、上述したようなオーバーレイネットワークが実現される限り、仮想的なネットワーク上のノードと、物理的なノードコンピュータとが、必ずしも、1対1に対応する必要はなく、たとえば、仮想的なネットワーク上の複数のノードが、1つの物理的なコンピュータにより実現されていてもよい。
 このような計算構成とすれば、大規模な台数のコンピュータ、究極的には、地球規模で分散する複数台のコンピュータという膨大な計算資源を使って、ATN形式のネットワークの計算・学習を実行でき、アルゴリズム探索効率を飛躍的に高めることができる。
 ここでは、実施の形態2の計算処理システム1000は、分散コンピューティングの手法として、グリッド・コンピューティングのようなサーバ-クライアント型(中央集権型)ではなく、ピア間通信を主体とするピア・ツー・ピア型(自律分散型)のアプリケーションとして実装される。
 この結果、実施の形態2の計算処理システムは、ピア・ツー・ピア型コミュニケーションの持つ特徴である、1)一部のピアが故障しても他のピアが引き継げるという耐故障性、2)各ノードは、好きな時に参加・離脱できるという自由参加性、3)大量のデータを一箇所にまとめておく必要がないという資源分散性、といった長所を持つ。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 本発明に係る計算処理装置の応用例としては、以下のようなものがある。
 (1)ユーザの与える理想データをもとにプログラムの欠陥を自己修復するコンパイル・実行システム(パソコン組み込みソフトウェアなど)
 (2)曖昧な情報の中から検索によって必要な情報を探し出すアルゴリズムを学習によって獲得するシステム(次世代ネットワーク通信など)
 (3)エキスパートが与えた教師データをもとに自らアルゴリズムを学習するロバスト知識伝承システム(工場、病院など)
 ユーザは、計算処理装置に、ラフにコードしたプログラムを初期プログラムとして与え、また、熟練者による制御出力データを教師データとして与える。計算処理装置は、プログラムの更新を繰り返し、複雑で多岐にわたり明文化することが困難であるため伝承できなかった熟練者の知識を表わすプログラムを作成することができる。ユーザは、作成されたプログラムを用いて、安定して動作する機械システムを構築することができる。
 (4)教師データをもとに最適な判断・制御・計画を行うように環境適応するロボットプログラム(介護、探査、災害、宇宙分野など)
 (5)生物計測データをもとに生体内のアルゴリズムを推定する能力を持ったシステム生物学モデル(代謝マップ、シグナル経路など)
 100 計算処理装置、102 コンピュータ本体、104 モニタ、105 バス、106 FDドライブ、108 光ディスクドライブ、110 キーボード、112 マウス、122 メモリ、124 ハードディスク、128 通信インターフェイス、131 初期プログラム、132 ネットワーク作成プログラム、133 ネットワーク修正プログラム、134 ネットワーク情報、134a ノード情報、134b 接続情報、134c エージェント情報、134d 削除ラベルリスト、135 ノード演算定義、136 学習変数、210 入力部、220 演算部、222 ネットワーク作成部、224 形式変換部、226 計算実行部、228 ネットワーク更新部、230 出力部、240 記憶部、1000 計算処理システム、1010.1~1010.n ノードコンピュータ。

Claims (19)

  1.  計算処理システムであって、
     複数の演算ノードおよび2つの前記演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行する計算実行部を備え、
     前記複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、
     前記計算実行部の計算結果および学習アルゴリズムを用いて、前記計算結果を変化させることなくトポロジーを変更するネットワーク更新部をさらに備える、計算処理システム。
  2.  前記複数の演算ノードは、アルゴリズムの流れを表わす制御値に対する計算を行なう演算ノードを含む、請求の範囲第1項に記載の計算処理システム。
  3.  前記複数の演算ノードは、四則演算に対応する演算ノードを含む、請求の範囲第1項または第2項に記載の計算処理システム。
  4.  前記ネットワーク更新部は、前記ネットワークに対し、前記演算ノードの変更、追加または削除処理を行なう、請求の範囲第1項または第2項に記載の計算処理システム。
  5.  前記ネットワーク更新部は、出力値が所定の回数以上連続して変化しない前記演算ノードを一定の値を出力する定数ノードに変更する、請求の範囲第4項に記載の計算処理システム。
  6.  前記ネットワーク更新部は、前記複数の演算ノードの中から2以上の前記演算ノードを近傍のノードの中からランダムに選択し、選択された前記演算ノードと接続される新たな前記演算ノードを生成する、請求の範囲第4項に記載の計算処理システム。
  7.  前記ネットワーク更新部は、前記複数の演算ノードの中から第1の演算ノードと第2の演算ノードを近傍のノードの中からランダムに選択し、前記第2の演算ノードから前記第1の演算ノードへのブリッジを生成する、請求の範囲第4項に記載の計算処理システム。
  8.  前記ネットワーク更新部は、前記複数の演算ノードの中から前記演算ノードを近傍のノードの中からランダムに選択し、選択された前記演算ノードについて分岐を作成する、請求の範囲第4項に記載の計算処理システム。
  9.  前記ネットワーク更新部は、各々一定の値を出力する複数の定数ノードを、結合法則により、1つの前記定数ノードに書き換える、請求の範囲第4項に記載の計算処理システム。
  10.  前記ネットワーク更新部は、所定の回数以上連続して修正を受ける前記ノード変数をもつ前記演算ノードを分裂させる、請求の範囲第4項に記載の計算処理システム。
  11.  前記複数の演算ノードは、ノード変数を有する演算ノードを含み、
     前記ネットワーク更新部は、前記計算結果の教師値からの誤差を計算し、前記誤差に対する前記ノード変数の寄与を計算し、前記寄与に基づいて前記ノード変数を修正する、請求の範囲第1項または第2項に記載の計算処理システム。
  12.  前記ネットワーク更新部は、前記誤差に基づいてエネルギー誤差を計算し、前記寄与として前記ノード変数についての前記エネルギー誤差の微係数を計算し、前記変数から前記微係数に学習係数をかけた値を引いて前記変数を更新する、請求の範囲第11項に記載の計算処理システム。
  13.  前記学習係数は、前記変数の更新により、前記エネルギー誤差が(1-η1p)倍(η1pは、0より大きく1未満の実数)になるように定められた値である、請求の範囲第12項に記載の計算処理システム。
  14.  外部からの入力を受け付ける入力部と、
     前記入力部が受け付けるプログラムに基づいて、前記ネットワークを作成するネットワーク作成部とをさらに備える、請求の範囲第1項または第2項に記載の計算処理システム。
  15.  前記入力部が受け付けるプログラムは、高級言語で記述されたソースコードであり、
     前記ネットワーク作成部は、前記ソースコードを言語非依存の中間コードに変換し、前記中間コードに基づいて前記ネットワークを作成する、請求の範囲第14項に記載の計算処理システム。
  16.  前記計算処理システムは、分散型の計算処理環境で動作する複数の計算処理装置を含み、
     各前記計算処理装置が、前記計算実行部の実行する処理および前記ネットワーク更新部の行う処理を分散して処理する、請求の範囲第1項に記載の計算処理システム。
  17.  計算処理システムを用いたプログラム作成方法であって、
     前記計算処理システムが複数の演算ノードおよび前記演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行するステップを備え、
     前記複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、
     前記計算処理システムが前記計算の結果および学習アルゴリズムを用いて、前記ネットワークのトポロジーを、前記学習の結果を保存しつつ修正するステップをさらに備える、プログラム作成方法。
  18.  計算処理システムにプログラムを作成させるためのプログラム作成プログラムを記録したコンピュータ読取可能な記録媒体であって、前記プログラム作成プログラムは、コンピュータに、
     前記計算処理システムに複数の演算ノードおよび前記演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行させるステップを備え、
     前記複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、
     前記計算処理システムに前記計算の結果および学習アルゴリズムを用いて、前記ネットワークのトポロジーを、前記学習の結果を保存しつつ修正させるステップをさらに備える、プログラム作成プログラムを実行させる、コンピュータ読取可能な記録媒体。
  19.  計算処理システムにプログラムを作成させるためのプログラム作成プログラムであって、
     前記計算処理システムに複数の演算ノードおよび前記演算ノードの間を各々つなぐ複数のエッジによりプログラムのアルゴリズム構造を表わすネットワークを用いて計算を実行させるステップを備え、
     前記複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、
     前記計算処理システムに前記計算の結果および学習アルゴリズムを用いて、前記ネットワークのトポロジーを、前記学習の結果を保存しつつ修正させるステップをさらに備える、プログラム作成プログラム。
PCT/JP2009/068271 2008-10-24 2009-10-23 計算処理システム、プログラム作成方法、および、プログラム作成プログラム WO2010047388A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/125,540 US8984103B2 (en) 2008-10-24 2009-10-23 Calculation processing system, program creation method, and program creation program
JP2010534850A JP5534524B2 (ja) 2008-10-24 2009-10-23 計算処理システム、プログラム作成方法、コンピュータ読取可能な記録媒体、および、プログラム作成プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008-274282 2008-10-24
JP2008274282 2008-10-24

Publications (1)

Publication Number Publication Date
WO2010047388A1 true WO2010047388A1 (ja) 2010-04-29

Family

ID=42119424

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/068271 WO2010047388A1 (ja) 2008-10-24 2009-10-23 計算処理システム、プログラム作成方法、および、プログラム作成プログラム

Country Status (3)

Country Link
US (1) US8984103B2 (ja)
JP (1) JP5534524B2 (ja)
WO (1) WO2010047388A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016021262A (ja) * 2015-10-01 2016-02-04 国立研究開発法人情報通信研究機構 論理推論システム、計算学習装置および論理推論方法
WO2017038104A1 (ja) * 2015-09-03 2017-03-09 株式会社Preferred Networks 実装装置および実装方法
US11521070B2 (en) 2015-10-29 2022-12-06 Preferred Networks, Inc. Information processing device and information processing method

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710764B1 (en) * 2011-07-15 2017-07-18 Sentient Technologies (Barbados) Limited Data mining technique with position labeling
CN111512306A (zh) * 2017-12-19 2020-08-07 区块链信息技术科研有限公司 实施计算机网络的系统及方法
US20230080172A1 (en) * 2020-03-13 2023-03-16 Hewlett-Packard Development Company, L.P. Transmitting node instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272622A (ja) * 1995-03-31 1996-10-18 Hitachi Software Eng Co Ltd プログラム変換装置
JP2001101251A (ja) * 1999-09-30 2001-04-13 Japan Science & Technology Corp 自動設計装置及び設計処理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3168204B2 (ja) * 1989-12-20 2001-05-21 富士通株式会社 ネットワーク構成データ処理装置
JPH04211802A (ja) * 1990-07-25 1992-08-03 Toshiba Corp ニュ−ラルネットワ−ク装置
JPH04160463A (ja) * 1990-10-24 1992-06-03 Hitachi Ltd ニューラルネットワークによる最適化方法
US5259064A (en) * 1991-01-25 1993-11-02 Ricoh Company, Ltd. Signal processing apparatus having at least one neural network having pulse density signals as inputs and outputs
KR100514681B1 (ko) * 2000-09-22 2005-09-13 주식회사 케이티 비동기 전송 모드 통신망에서의 라우팅 방법 및 장치
US20020141342A1 (en) * 2000-12-07 2002-10-03 Furman Elliot M. Method and system for automatically directing data in a computer network
US7457257B2 (en) * 2005-11-17 2008-11-25 International Business Machines Corporation Apparatus, system, and method for reliable, fast, and scalable multicast message delivery in service overlay networks
US7844663B2 (en) * 2006-07-10 2010-11-30 International Business Machines Corporation Methods, systems, and computer program products for gathering information and statistics from a community of nodes in a network
US8069229B2 (en) * 2006-12-28 2011-11-29 Computer Associates Think, Inc. Topology static zones

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272622A (ja) * 1995-03-31 1996-10-18 Hitachi Software Eng Co Ltd プログラム変換装置
JP2001101251A (ja) * 1999-09-30 2001-04-13 Japan Science & Technology Corp 自動設計装置及び設計処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TETSUYA SEKIOKA ET AL.: "Identeki Programming o Mochiita Kansu Gosei Algorithm no Kairyoho no Teian", THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS (J83-D-I) NO.4, 25 APRIL 2000, vol. J83-D-I, no. 4, 25 April 2000 (2000-04-25), pages 407 - 417 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017038104A1 (ja) * 2015-09-03 2017-03-09 株式会社Preferred Networks 実装装置および実装方法
JP2016021262A (ja) * 2015-10-01 2016-02-04 国立研究開発法人情報通信研究機構 論理推論システム、計算学習装置および論理推論方法
US11521070B2 (en) 2015-10-29 2022-12-06 Preferred Networks, Inc. Information processing device and information processing method
US11915146B2 (en) 2015-10-29 2024-02-27 Preferred Networks, Inc. Information processing device and information processing method

Also Published As

Publication number Publication date
JPWO2010047388A1 (ja) 2012-03-22
US8984103B2 (en) 2015-03-17
US20110202639A1 (en) 2011-08-18
JP5534524B2 (ja) 2014-07-02

Similar Documents

Publication Publication Date Title
Gad Pygad: An intuitive genetic algorithm python library
Ciaburro et al. Neural Networks with R: Smart models using CNN, RNN, deep learning, and artificial intelligence principles
WO2010047388A1 (ja) 計算処理システム、プログラム作成方法、および、プログラム作成プログラム
Hemmi et al. Development and evolution of hardware behaviors
Ding et al. Modeling self-adaptive software systems with learning Petri nets
Lakhmiri et al. HyperNOMAD: Hyperparameter optimization of deep neural networks using mesh adaptive direct search
CN113449858A (zh) 一种神经网络模型的处理方法以及相关设备
CN111914378B (zh) 一种单振幅量子计算模拟方法及装置
Braune et al. A genetic programming learning approach to generate dispatching rules for flexible shop scheduling problems
JP2013008221A (ja) 論理推論システム、計算学習装置および論理推論方法
Cruz et al. A linear logic programming language for concurrent programming over graph structures
CN113128015B (zh) 预估单振幅模拟量子计算所需资源的方法和系统
Pencheva et al. Generalized net models of basic genetic algorithm operators
Bernard et al. New techniques for inferring L-systems using genetic algorithm
Kreowski et al. Graph transformation through graph surfing in reaction systems
Ismkhan Effective three-phase evolutionary algorithm to handle the large-scale colorful traveling salesman problem
JP6044691B2 (ja) 論理推論システム、計算学習装置および論理推論方法
Gao et al. An expanded lateral interactive clonal selection algorithm and its application
WO2004068342A1 (ja) ソフトウェア開発前処理方法、ソフトウェア制御方法、ソフトウェア開発方法並びにソフトウェア開発装置
Nehaniv Self-replication, evolvability and asynchronicity in stochastic worlds
Kalenkova et al. Application of a Genetic Algorithm for Finding Edit Distances between Process Models
KR102090109B1 (ko) 학습 및 추론 장치 및 그 방법
Liang Decentralized learning of randomization-based neural networks
Peterson et al. A distributed blossom algorithm for minimum-weight perfect matching
Kurth Multiscale graph grammars can generate cayley graphs of groups and monoids

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09822085

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2010534850

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 13125540

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09822085

Country of ref document: EP

Kind code of ref document: A1