Reservoir computing data flow processor
11809370 · 2023-11-07
Assignee
Inventors
Cpc classification
E21B2200/20
FIXED CONSTRUCTIONS
E21B41/00
FIXED CONSTRUCTIONS
E21B2200/22
FIXED CONSTRUCTIONS
International classification
Abstract
A reservoir computing data flow processor includes a plurality of reservoir units to be units constituting a reservoir. The reservoir is able to be reconfigured by changing a connection relationship between the reservoir units. Each of the reservoir units is an operation unit block configured to execute a predetermined operation. The operation unit block includes a first adder configured to perform an addition operation on at least two inputs, a nonlinear operator configured to apply a nonlinear function to an output from the first adder or a result of multiplying the output by a predetermined coefficient, and a second adder configured to perform an addition operation on at least two inputs including an output from the nonlinear operator or a result of multiplying the output by a predetermined coefficient.
Claims
1. A reservoir computing data flow processor comprising: a plurality of reservoir units to be units constituting a reservoir, wherein the reservoir is able to be reconfigured by changing a connection relationship between the reservoir units, wherein each of the reservoir units is an operation unit block configured to execute a predetermined operation, and wherein the operation unit block includes a first adder configured to perform an addition operation on at least two inputs, a nonlinear operator configured to apply a nonlinear function to an output from the first adder or a result of multiplying the output by a predetermined coefficient, and a second adder configured to perform an addition operation on at least two inputs including an output from the nonlinear operator or a result of multiplying the output by a predetermined coefficient.
2. The reservoir computing data flow processor according to claim 1, wherein the second adder is configured to perform an addition operation at least on: an output from the nonlinear operator or a result of multiplying the output by a predetermined coefficient; and a signal corresponding to an output signal from the second adder of another stage among a plurality of stages arranged in parallel in a space domain or a result of multiplying the signal by a predetermined coefficient.
3. The reservoir computing data flow processor according to claim 1, further comprising: a first block configured to connect the reservoir units; a second block configured to perform input and output processes; and a data flow controller configured to change a data flow by switching the connection relationship between the reservoir units on a basis of data flow representation of a mathematical model of a reservoir.
4. The reservoir computing data flow processor according to claim 2, further comprising: a first block configured to connect the reservoir units; a second block configured to perform input and output processes; and a data flow controller configured to change a data flow by switching the connection relationship between the reservoir units on a basis of data flow representation of a mathematical model of a reservoir.
5. The reservoir computing data flow processor according to claim 1, wherein the reservoir is able to be reconfigured in a programmable manner.
6. The reservoir computing data flow processor according to claim 2, wherein the reservoir is able to be reconfigured in a programmable manner.
7. The reservoir computing data flow processor according to claim 3, wherein the reservoir is able to be reconfigured in a programmable manner.
8. The reservoir computing data flow processor according to claim 4, wherein the reservoir is able to be reconfigured in a programmable manner.
9. The reservoir computing data flow processor according to claim 1, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
10. The reservoir computing data flow processor according to claim 2, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
11. The reservoir computing data flow processor according to claim 3, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
12. The reservoir computing data flow processor according to claim 4, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
13. The reservoir computing data flow processor according to claim 5, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
14. The reservoir computing data flow processor according to claim 6, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
15. The reservoir computing data flow processor according to claim 7, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
16. The reservoir computing data flow processor according to claim 8, wherein the reservoir is able to be reconfigured on a basis of predetermined information in accordance with a desirable data flow graph.
17. The reservoir computing data flow processor according to claim 1, wherein a plurality of operation unit blocks are arranged in parallel in a space domain.
18. The reservoir computing data flow processor according to claim 2, wherein a plurality of operation unit blocks are arranged in parallel in a space domain.
19. The reservoir computing data flow processor according to claim 1, wherein a plurality of operation unit blocks are arranged in parallel in a time domain.
20. The reservoir computing data flow processor according to claim 1, wherein the first adder is configured to perform an addition operation at least on: a signal corresponding to an output signal from the second adder of a previous time or a result of multiplying the signal by a predetermined coefficient; and an input signal to the reservoir or a result of multiplying the input signal by a predetermined coefficient.
Description
BRIEF DESCRIPTION OF DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
DESCRIPTION OF EMBODIMENTS
(12) Hereinafter, embodiments of the present disclosure will be described with reference to the drawings.
(13) [Reservoir Computing Data Flow Processor]
(14)
(15) Also, in
(16) In the present embodiment, the reservoir computing data flow processor 1 is implemented as an ASIC that performs digital processing.
(17) The reservoir computing data flow processor 1 includes an array 21, a data flow controller 22 which is an example of a controller, and a shared storage 23 which is an example of a storage.
(18) Also, the reservoir computing data flow processor 1 may be configured without including the shared storage 23.
(19) In the present embodiment, the reservoir computing data flow processor 1 may be connected to each of an input layer 41 and an output layer 42 of the reservoir computing.
(20) Also, the reservoir computing data flow processor 1 itself does not need to have the input layer 41 and the output layer 42.
(21) <Array>
(22) The array 21 will be described.
(23) The array 21 is configured by arranging a plurality of digital reservoir units (DRUs) as building blocks (functional blocks) in an array shape. Each reservoir unit is connected to functional blocks such as a connecting block (CB) and an input/output (I/O) interface block (IB).
(24) In the present embodiment, for convenience of description, the digital reservoir unit may be referred to as the DRU, the connecting block may be referred to as the CB, and the input/output interface block may be referred to as the IB.
(25) The DRU includes a plurality of operators for executing an operation corresponding to the virtual node of the reservoir as a physical node. The plurality of operators include an operator that performs a nonlinear operation.
(26) The CB has a function of receiving a state value of the DRU as an intermediate signal and performing a bridge role in providing the state value as an input to nearby different DRUs. Also, the CB has a memory function of retaining the state value of each DRU at a certain time.
(27) The IB has a function of giving an input signal from the input layer to each DRU and passing a state value of a desired DRU as an output signal to the output layer. Also, the IB has a function of feeding back the state value of a certain DRU at a certain time as an input to the certain DRU at the next time. Also, the IB may feed back the state value of a certain DRU at a certain time as an input to any DRU a certain time period later as well as at the next time.
(28) In the present embodiment, a plurality of DRUs are arranged on a plane in the array 21.
(29) In the present embodiment, for convenience of description, two directions orthogonal to each other on the plane will be referred to as a vertical direction and a horizontal direction. Also, in the example of
(30) Also, in the present embodiment, the plurality of functional blocks are arranged according to a predetermined pattern.
(31) In the example of
(32) Here, it is assumed that i (i is an integer greater than or equal to 1) represents the number of stages in the vertical direction and a maximum value thereof is L in the present embodiment. In the present embodiment, L is an integer greater than or equal to 2. In the example of
(33) Also, it is assumed that j (j is an integer greater than or equal to 1) represents the number of stages in the horizontal direction and a maximum value thereof is k in the present embodiment. In the present embodiment, k is an integer greater than or equal to 2. In the example of
(34) Also, in the example of
(35) Also, in the example of
(36) The arrangement of functional blocks such as the CBs 111 to 116 and the Ms 121 to 128 will be described.
(37) The present disclosure is not limited to the example of
(38) Also, the present disclosure is not limited to the example of
(39) The arrangement of functional blocks in the example of
(40) For example, the CB 111, the CB 112, the CB 113, the CB 114, the CB 115, and the CB 116 are arranged as an arrangement of six functional blocks in the horizontal direction. At this time, the arrangement is made so that the number of CBs 111 to 116 becomes (k+1) with respect to the number of stages (k) of the DRUs 51(i, j) in the horizontal direction.
(41) Also, the IB 121, the IB 122, the IB 123, the IB 124, the IB 125, the IB 126, the IB 127, and the IB 128 are arranged as an arrangement of eight functional blocks in the vertical direction. At this time, the arrangement is made so that the number of IBs 121 to 128 becomes (L+1) with respect to the number of stages (L) of the DRUs 51(i, j) in the vertical direction.
(42) The arrangement is made so that the CBs 111 to 116 across a plurality of stages in the vertical direction intersect the IBs 121 to 128 across a plurality of stages in the horizontal direction.
(43) The wiring will be described.
(44) Also, a wiring connection relationship shown in
(45) The present disclosure is not limited to the example of
(46) The present disclosure is not limited to the example of
(47) The number of wiring elements included in each of the CBs 111 to 116 and the IBs 121 to 128 may be any number.
(48) The wiring in the example of
(49) The DRUs 51(i, j) are connected to the adjacent CBs 111 to 116 and the adjacent IBs 121 to 128 via terminals. Bus-type wiring is provided inside the CBs 111 to 116 and the IBs 121 to 128 and intersections of the IBs 121 to 128 and the CBs 111 to 116 can be connected via vias. The functional blocks of the DRUs 51(i, j), the CBs 111 to 116, and the IBs 121 to 128 have a switch and a path of an input/output signal can be changed with coupling between the DRUs 51(i, j) through switching according to a control signal from the data flow controller 22. That is, the reservoir computing data flow processor 1 according to the present embodiment becomes a reconfigurable data flow processor.
(50) The DRUs 51(i, j) have connectors for the CBs 111 to 116 adjacent to the DRUs 51(i, j) and connectors for the IBs 121 to 128 adjacent to the DRUs 51(i, j).
(51) The DRUs 51(i, j) can be connected to the CBs 111 to 116 via the connectors for the CBs 111 to 116 adjacent to the DRUs 51(i, j).
(52) The DRUs 51(i, j) can be connected to the IBs 121 to 128 via the connectors for the IBs 121 to 128 adjacent to the DRUs 51(i, j).
(53) Also, in the example of
(54) <Data Flow Controller and Shared Storage>
(55) The data flow controller 22 controls various types of processes and data flows.
(56) The data flow controller 22 changes a wiring connection relationship with respect to a plurality of functional blocks included in the array 21. For example, the term “changeable” may be referred to as the term “configurable” or “reconfigurable.” That is, for example, the data flow controller 22 can initially configure the reservoir implemented by the array 21 by changing the connection relationship of the plurality of functional blocks included in the array 21 or configure (i.e., reconfigure) another reservoir by changing a reservoir that has already been configured.
(57) Also, for example, the data flow controller 22 may automatically perform the above-described configuration (or reconfiguration) on the basis of a predetermined rule or the like or may perform the above-described configuration (or reconfiguration) on the basis of content of a manipulation performed by the user. A case in which the above-described configuration (or reconfiguration) can be performed on the basis of the content of the manipulation performed by the user may be referred to as a programmable case. Thus, the data flow controller 22 has a function of storing and retaining content of the configuration programmed by the user.
(58) The shared storage 23 stores various types of information, for example, the state value of the DRU 51(i, j) at each time.
(59) The shared storage 23 is used to store information when needed by the data flow controller 22.
(60) For example, the data flow controller 22 performs a process of writing information to the shared storage 23 and a process of reading the information stored in the shared storage 23.
(61) Also, in the array 21, for example, only the reservoir body (the intermediate layer) may be configured or the reservoir and another logic circuit related to the reservoir may be configured. The other logic circuit may be, for example, one or both of the input layer 41 for the reservoir and the output layer 42 for the reservoir. The array 21 may include a logic circuit for learning a weight parameter of coupling from the reservoir (the intermediate layer) to the output layer 42.
(62) Also, the array 21 may include any number of functional blocks in any arrangement.
(63) Also, the array 21 may include any number of wiring elements in any arrangement.
(64) The array 21 may be able to configure (or reconfigure) a reservoir in which a number of various functional blocks are connected in various wiring connection relationships.
(65) <Operation Unit Block>
(66) An operation unit block will be described with reference to
(67) In the present embodiment, for convenience of description, a functional block that can be used as the DRU 51(i, j) of the array 21 is referred to as the operation unit block. In the present embodiment, the operation unit block is a device of a minimum unit that is reconfigurable as a block that performs a predetermined operation in an operation circuit of the reservoir computing.
(68) Also, in the present embodiment, for example, the CB of the array 21 may be referred to as a connection unit block or the like for convenience of description.
(69) Also, in the present embodiment, for example, the IB of the array 21 may be referred to as an input/output unit block or the like for convenience of description.
(70)
(71) The operation unit block 211 includes an adder 231, a nonlinear operator 232, and an adder 233.
(72) Also, in
(73) In the present embodiment, the input terminals 251 and 253 to 256 and the output terminal 252 are virtual terminals for convenience of description. Also, for example, the input terminals 251 and 253 to 256 and the output terminal 252 may be actually provided in the operation unit block 211.
(74) In the present embodiment, the number of stages in which operations are performed in parallel in a space domain in the reservoir is represented by L. L represents an integer greater than or equal to 2.
(75) i represents an integer greater than or equal to 1 and less than or equal to L as a variable.
(76) k represents a value corresponding to time. In the present embodiment, k represents a discrete timing and represents an integer. In the present embodiment, it is assumed that the time passes as k increases and it is assumed that the time passes every time k is incremented by 1.
(77) However, k may not represent the actual time, i.e., when operations are performed in parallel in a time domain in the reservoir, k does not necessarily represent the actual time. That is, the unit of time may be any unit.
(78) A signal x.sub.i(k−1) is input to the input terminal 251. Here, it is assumed that the operation unit block 211 shown in
(79) A signal x.sub.i(k) is output from the output terminal 252. The signal x.sub.i(k−1) represents a signal output from the operation unit block 211 as a signal of time (k−1). The signal x.sub.i(k) represents a signal output from the operation unit block 211 as a signal of time (k).
(80) A signal u(k) is input to the input terminal 253. The signal u(k) represents a signal input to the reservoir as a signal of time (k).
(81) A signal Σx.sub.i(k−d) is input to the input terminal 254. Here, Σ represents a sum of two or more predetermined values d. d represents an integer. That is, the signal Σx.sub.i(k−d) represents a sum of signals of two or more different timings output from the operation unit block 211.
(82) A signal x.sub.i−m(k−1) is input to the input terminal 255. The signal x.sub.i−m(k−1) represents a signal output from an operation unit block of an (i−m).sup.th stage as a signal of time (k−1). m represents an integer and represents an integer greater than or equal to 1 and less than or equal to (i−1) in the present embodiment.
(83) Here, although one input terminal 255 is shown in the example of
(84) In the example of
(85) A signal x.sub.i+n(k−1) is input to the input terminal 256. The signal x.sub.i+n(k−1) represents a signal output from the operation unit block of an (i+n).sup.th stage as a signal of time (k−1). n represents a natural number (including 0) in a broad sense and represents an integer greater than or equal to 0 and less than or equal to (L−i) in the present embodiment.
(86) Here, in the example of
(87) In the example of
(88) Here, relationships between signals input to the five input terminals 251 and 253 to 256 and a signal output from the one output terminal 252 are expressed by Eq. (1).
(89)
(90) In the operation unit block 211, the signal x.sub.i(k−1) input from the input terminal 251 is input to the adder 231.
(91) In the operation unit block 211, a signal u(k) input from the input terminal 253 is converted into a signal J.sub.i(k) and the signal J.sub.i(k) is input to the adder 231. Here, the signal J.sub.i(k) is expressed by Eq. (2). That is, the signal J.sub.i(k) represents a result of multiplying the signal u(k) by a predetermined coefficient w.sub.in,i. The predetermined coefficient w.sub.in,i may be any value or may be 0.
(92) In the example of
[Math. 2]
J.sub.i(k)=w.sub.in,iu(k) (2)
(93) In the operation unit block 211, the signal Σx.sub.i(k−d) input from the input terminal 254 is multiplied by a predetermined coefficient s.sub.i,d and then a multiplication result is input to the adder 231. The predetermined coefficient s.sub.i,d may be any value or may be 0.
(94) Also, in the example of
(95) In the operation unit block 211, a signal x.sub.i−m(k−1) input from the input terminal 255 is multiplied by a predetermined coefficient β.sub.m and a multiplication result is input to the adder 233. In the present embodiment, the multiplication result is input to the adder 233 with respect to one or more types of m.
(96) Also, in the example of
(97) In the operation unit block 211, a signal x.sub.i+n(k−1) input from the input terminal 256 is multiplied by a predetermined coefficient β.sub.n and a multiplication result is input to the adder 233. In the present embodiment, the multiplication result is input to the adder 233 with respect to one or more types of n.
(98) Also, in the example of
(99) The adder 231 performs an addition operation on a signal x.sub.i(k−1), a signal J.sub.i(k), and a signal s.sub.i,dΣx.sub.i(k−d), which are input signals, and outputs an addition operation result to the nonlinear operator 232.
(100) The nonlinear operator 232 substitutes a signal input from the adder 231 into z of the predetermined nonlinear function F.sub.NL(z). Here, F.sub.NL(z) represents a nonlinear function with z as a variable. As the nonlinear function, for example, a sigmoid function, a hyperbolic tangent function, or the like may be used, without particular limitation.
(101) The nonlinear operator 232 outputs an operation result of the nonlinear function F.sub.NL(z). The output operation result is multiplied by a predetermined coefficient (1−α) and a multiplication result is input to the adder 233. Here, a may be any value.
(102) Also, in the example of
(103) The adder 233 performs an addition operation on a signal (1−α)F.sub.NL(z) which is the input signal, a sum of signals β.sub.mx.sub.i−m(k−1) with respect to m, and a sum of signals β.sub.nx.sub.i+n(k−1) with respect to n. An addition operation result is output to the output terminal 252. That is, the addition operation result is represented by Eq. (1).
(104) Here, in the example of
(105) On the other hand, the input signal x.sub.i−m(k−1) from the input terminal 255 and the input signal x.sub.i+n(k−1) from the input terminal 256 may have different configurations. For example, assuming that m and n have the same value and m and n are positive values, the input signal x.sub.i−m(k−1) and the input signal x.sub.i+n(k−1) are input as two spatially symmetric input signals to the adder 233.
(106) Also, for example, a configuration in which the input terminals to the adder 233 are only the two input terminals 255 and 256 may be used.
(107) Also, the adder 231, the nonlinear operator 232, and the adder 233 may be configured using any circuits.
(108) Also, the coefficient s.sub.i,d, the coefficient w.sub.in,i, the coefficient (1−α), and the coefficients β.sub.m and β.sub.n serving as weights for the signal may be any values, for example, 1 or 0. When the coefficient serving as the weight for the signal is 1, the signal is not changed. When the coefficient serving as the weight for the signal is 0, this corresponds to a configuration in which no signal is used at a position of the weight.
(109) Also, in the example of
(110)
(111) In
(112) The operation unit block 311 includes an adder 231, a nonlinear operator 232, and an adder 233.
(113) Also, in
(114) Here, the operation unit block 311 is different from the operation unit block 211 shown in
(115) The signal output from the operation unit block 311 to the output terminal 252 is expressed by Eq. (3). That is, in the signal, there is no term corresponding to the above path.
(116)
(117) Here, in the example of
(118) On the other hand, for example, a configuration in which the input terminal to the adder 233 is only one input terminal 255 may be used.
(119)
(120) In
(121) The operation unit block 411 includes an adder 231, a nonlinear operator 232, and an adder 233.
(122) Also, in
(123) Here, the operation unit block 411 is different from the operation unit block 211 shown in
(124) The signal output from the operation unit block 411 to the output terminal 252 is expressed by Eq. (4). That is, in the signal, there is no term corresponding to the above path.
(125)
(126)
(127) In
(128) The operation unit block 511 includes an adder 231, a nonlinear operator 232, and an adder 233.
(129) Also, in
(130) Here, the operation unit block 511 is different from the operation unit block 211 shown in
(131) The signal output from the operation unit block 511 to the output terminal 252 is expressed by Eq. (5). That is, in the signal, there is no term corresponding to the above paths.
(132)
(133) Here, as in the description of the relationship between the operation unit block 311 shown in
(134) Also, for example, the array 21 of the reservoir computing data flow processor 1 may have a plurality of operation unit blocks capable of configuring (reconfiguring) any operation unit block among the operation unit blocks 211, 311, 411, and 511 shown in
(135) Also, as another example, the array 21 may have any operation unit block as each of the plurality of operation unit blocks.
(136) [Example of Configuration of Array]
(137) An example of a configuration of the array 21 will be described with reference to
(138) Also, for example, the configurations shown in
(139) Also, when a plurality of operation unit blocks are expanded and arranged in parallel in a spatial or time domain, the operation unit block arranged at the end such as the first stage in the spatial or time domain may have an input source or the like different from that of an operation unit block of another stage. For example, in a configuration in which an output from an operation unit block of another stage is input to a certain operation unit block in the spatial or time domain, another stage may be absent with respect to the operation unit block arranged at the end such as the first stage. In this case, an input terminal or the like for inputting an alternative signal may be provided. Also, an input signal from the input layer 41 may be given with a weight to the input terminal.
(140)
(141) In the example of
(142) Each of the operation unit blocks 611 to 613 of the three stages is an operation unit block that performs an operation similar to that of the operation unit block 511 shown in
(143) In the operation unit blocks 611 to 613, input terminals 631, 651, and 671 correspond to the input terminal 251 shown in
(144) Also, in the operation unit block 612 of the i.sup.th stage, the input terminal 671 of the operation unit block 613 of the (i+1).sup.th stage which is the next stage is used as the input terminal 255 shown in
(145) Also, the same is true for other stages.
(146) Here, although a configuration for three stages (the operation unit blocks 611 to 613) arranged in parallel in the spatial domain is shown in the example of
(147) Also, although a configuration in which the input terminal of the operation unit block of a certain stage is used for an input to the operation unit block of the previous stage is shown in the example of
(148)
(149) Also, in the example of
(150) In the example of
(151) In the example of
(152) Each of the operation unit blocks 711 to 713 of the three stages is an operation unit block that performs an operation similar to that of the operation unit block 511 shown in
(153) In the operation unit blocks 711 to 713, input terminals 732, 752, and 772 correspond to the input terminal 253 shown in
(154) Also, in the operation unit blocks 711 to 713, the output terminals 632, 652, and 672 of the operation unit blocks 611 to 613 present in the previous stage in the time domain are shared as input terminals corresponding to the input terminal 251 shown in
(155)
(156) In the example of
(157) In the example of
(158) Also, in the example of
(159) In the example of
(160) Each of the operation unit blocks 811 to 813 of the three stages is an operation unit block that performs an operation similar to the operation unit block 511 shown in
(161) In the operation unit blocks 811 to 813, input terminals 832, 852, and 872 correspond to the input terminal 253 shown in
(162) Also, in the operation unit blocks 811 to 813, the output terminals 731, 751, and 771 of the operation unit blocks 711 to 713 present in the previous stage in the time domain are shared as input terminals corresponding to the input terminal 251 shown in
(163) Here, although the configuration in which the operation unit blocks are provided in parallel in one to three stages in the time domain is shown in the examples of
(164)
(165) In the example of
(166) Each of the operation unit blocks 911 to 913 of the three stages is an operation unit block that performs an operation similar to the operation unit block 411 shown in
(167) In the operation unit blocks 911 to 913, input terminals 931, 951, and 971 correspond to the input terminal 251 shown in
(168) Also, in the operation unit block 912 of the i.sup.th stage, the input terminal 971 of the operation unit block 913 of the (i+1).sup.th stage which is the next stage is used as the input terminal 255 shown in
(169) Also, the same is true for other stages.
(170) Also, in the operation unit block 912 of the i.sup.th stage, the input terminal 931 of the operation unit block 911 of the (i−1).sup.th stage which is the previous stage is used as the input terminal 256 shown in
(171) Also, the same is true for other stages.
(172) For example, the input terminal 951 of the operation unit block 912 of the i.sup.th stage is used for an input to the operation unit block 912, an input to the operation unit block 911 of the (i−1).sup.th stage which is the previous stage, and an input to the operation unit block 913 of the (i+1).sup.th stage which is the next stage.
(173) Here, although a configuration for three stages (the operation unit blocks 911 to 913) arranged in parallel in the spatial domain is shown in the example of
(174) In the example of
(175) Each of the operation unit blocks 1011 to 1013 of the three stages is an operation unit block that performs an operation similar to that of the operation unit block 411 shown in
(176) In the operation unit blocks 1011 to 1013, input terminals 1032, 1052, and 1072 correspond to the input terminal 253 shown in
(177) Also, in the operation unit blocks 1011 to 1013, the output terminals 932, 952, and 972 of the operation unit blocks 911 to 913 present in the previous stage in the time domain are shared as the input terminal corresponding to the input terminal 251 shown in
(178)
(179) Also, in the example of
(180) In the example of
(181) Also, in the example of
(182) In the example of
(183) Each of the operation unit blocks 1111 to 1113 of the three stages is an operation unit block that performs an operation similar to that of the operation unit block 411 shown in
(184) In the operation unit blocks 1111 to 1113, the input terminals 1132, 1152, and 1172 correspond to the input terminal 253 shown in
(185) Also, in the operation unit blocks 1111 to 1113, the output terminals 1031, 1051, and 1071 of the operation unit blocks 1011 to 1013 present in the previous stage in the time domain are shared as input terminals corresponding to the input terminal 251 shown in
(186) Here, although a configuration in which the operation unit blocks are provided in parallel in the two stages and the three stages in the time domain is shown in the examples of
(187)
(188) In the example of
(189) Each of the operation unit blocks 1211 to 1213 of the three stages is an operation unit block that performs an operation similar to that of the operation unit block 211 shown in
(190) In the operation unit blocks 1211 to 1213, input terminals 1231, 1251, and 1271 correspond to the input terminal 251 shown in
(191) Also, in the operation unit block 1212 of the i.sup.th stage, the input terminal 1271 of the operation unit block 1213 of the (i+1).sup.th stage which is the next stage is used as the input terminal 255 shown in
(192) Also, in the operation unit block 1212 of the i.sup.th stage, the input terminal 1231 of the operation unit block 1211 of the (i−1).sup.th stage which is the previous stage is used as the input terminal 256 shown in
(193) Also, the same is true for other stages.
(194) For example, the input terminal 1251 of the operation unit block 1212 of the i.sup.th stage is used for an input to the operation unit block 1212, an input to the operation unit block 1211 of the (i−1).sup.th stage which is the previous stage, and an input to the operation unit block 1213 of the (i+1).sup.th stage which is the next stage.
(195) Here, although a configuration for three stages (the operation unit blocks 1211 to 1213) arranged in parallel in the spatial domain is shown in the example of
(196) In the example of
(197) Each of the operation unit blocks 1311 to 1313 of the three stages is an operation unit block that performs an operation similar to the operation unit block 211 shown in
(198) In the operation unit blocks 1311 to 1313, input terminals 1332, 1352, and 1372 correspond to the input terminal 253 shown in
(199) Also, in the operation unit blocks 1311 to 1313, the output terminals 1232, 1252, 1272 of the operation unit blocks 1211 to 1213 present in the previous stage in the time domain are shared as input terminals corresponding to the input terminal 251 shown in
(200) Also, in the operation unit blocks 1311 to 1313, the input terminals 1231, 1251, and 1271 of the operation unit blocks 1211 to 1213 present in the previous stage in the time domain are shared as input terminals corresponding to the input terminal 254 shown in
(201) For example, the input terminal 1251 of the operation unit block 1212 of the i.sup.th stage is used for an input to the operation unit block 1212 and an input to the operation unit block 1312 of the next stage in the time domain.
(202) Here, although a configuration in which the operation unit blocks are provided in parallel in the two stages in the time domain is shown in the examples of
(203) [Regarding Above-Described Embodiments]
(204) The reservoir computing data flow processor 1 according to the present embodiment includes a reconfigurable machine learning device to physically implement a reservoir computing having a function of generating, predicting, identifying, or detecting a time series signal. The reservoir computing data flow processor 1 according to the present embodiment includes an operation unit block which is a minimum constituent unit of a reservoir that performs a predetermined operation and generates and retains (buffers) time series information as the machine learning device. In the present embodiment, the operation unit block becomes a reservoir unit of the minimum unit constituting the reservoir.
(205) Therefore, for example, the reservoir computing data flow processor 1 according to the present embodiment can provide hardware that executes reservoir computing for a time series signal in real time.
(206) In the reservoir computing data flow processor 1 according to the present embodiment, when the number of stages of the operation unit block is small in the spatial or time domain, the power consumption is small and the overall processing time is long. On the other hand, in the reservoir computing data flow processor 1 according to the present embodiment, when the number of stages of the operation unit blocks is large in the spatial or time domain, the power consumption is large and the overall processing time is short. For example, by adjusting these trade-offs, it is possible to improve the performance of the device.
(207) For example, the reservoir computing data flow processor 1 according to the present embodiment can provide a dedicated device for achieving the efficiency of the data flow and optimizing the throughput in implementing the reservoir computing function.
(208) In the reservoir computing data flow processor 1 according to the present embodiment, for example, by deriving a mathematically equivalent DFG at the time of design, a reservoir of any scale and various network configurations can be implemented.
(209) Also, in the reservoir computing data flow processor 1 according to the present embodiment, for example, it is possible to flexibly cope with the expansion of an operation equation of a mathematical model of an implementation target. For example, the embodiments of
(210) Also, in the reservoir computing data flow processor 1 according to the present embodiment, for example, an in-memory computing architecture effectively equipped with a non-volatile memory (NVM) can be implemented. Also, for example, it can be implemented as an optical waveguide device by implementing a nonlinear operation function of an optical modulator and a DFG on an optical waveguide.
(211) In the reservoir computing data flow processor 1 according to the present embodiment, the parameters and the network configuration can be changed in a programmable manner.
(212) Therefore, in the reservoir computing data flow processor 1 according to the present embodiment, the parameters and the network configuration can be changed as a module configuration in a programmable manner, for example, so that a designer (an example of a user) can easily change the configuration of the reservoir for a specific purpose to achieve customized physical implementation.
(213) For example, in the reservoir computing data flow processor 1 according to the present embodiment, when the reservoir is implemented, the reservoir is mathematically associated with the reservoir having a one-dimensional ring topology configuration, so that a specific architecture and parameters can be determined theoretically and systematically.
(214) The reservoir computing data flow processor 1 according to the present embodiment generates a first intermediate signal (a signal input to the nonlinear operator 232 in the present embodiment) by receiving a resulting signal obtained by multiplying the input signal (the signal u(k) in the present embodiment) by a weight and adding the signal to a state value internally retained in the previous time step or in the time step before the previous time step. Also, the reservoir computing data flow processor 1 according to the present embodiment generates a second intermediate signal (a signal output from the nonlinear operator 232 in the present embodiment) by performing nonlinear conversion on the first intermediate signal. Also, in the reservoir computing data flow processor 1 according to the present embodiment, for example, a signal from an adjacent module is received, an interaction term obtained by multiplying the signal by a weight is calculated, and the interaction term is added to the second intermediate signal, so that an output signal (the signal x.sub.i(k) in the present embodiment) is generated as a state value at the next time step.
(215) Therefore, in the reservoir computing data flow processor 1 according to the present embodiment, the minimum constituent unit of the reservoir that generates and retains the time series information can be specifically implemented in the reservoir computing.
(216) In the reservoir computing data flow processor 1 according to the present embodiment, representation is made by a DFG using the minimum constituent unit.
(217) Therefore, in the reservoir computing data flow processor 1 according to the present embodiment, it is possible to easily design a constituent unit for implementing a reservoir layer using a wide variety of devices, for example, digital hardware devices, such as an FPGA and an ASIC.
(218) For example, when the reservoir computing data flow processor 1 according to the present embodiment is implemented on an FPGA, an ASIC, or the like, it is possible to implement efficient computing resources and implement hardware that performs efficient data flow control (not a control flow).
(219) In the reservoir computing data flow processor 1 according to the present embodiment, it is possible to implement a network configuration having any scale and various two-dimensional topologies by combining a plurality of machine learning devices. Also, in the reservoir computing data flow processor 1 according to the present embodiment, the reservoir having such a network configuration can be graphically represented through data flow representation. Therefore, in the present embodiment, a device operation can be systematically analyzed and taken into account in the design on the basis of the data flow representation.
(220) In the reservoir computing data flow processor 1 according to the present embodiment, machine learning devices can be integrated and implemented, and for example, a network configuration corresponding to an expansion model of reservoir computing can be implemented.
(221) Therefore, in the reservoir computing data flow processor 1 according to the present embodiment, for example, the reservoir layer can be implemented on an FPGA, an ASIC, or the like on the basis of different expansion models.
(222) In the present embodiment, it is possible to theoretically derive a DFG for converting sequential operations executed by virtual nodes in a time-division manner into parallel and distributed operations through physical nodes arranged in the spatial domain and provide the reservoir computing data flow processor 1 as the physical implementation thereof. In the present embodiment, because the reservoir configuration (coupling structure) can be made only by adjacent coupling by the derived data flow graph representation, the efficiency of the data flow control can be achieved and problems (scalability and variation in wiring delay) due to the complexity of wiring can be solved.
(223) <Examples of Configuration>
(224) As an example of the configuration, the reservoir computing data flow processor (the reservoir computing data flow processor 1 in the example of
(225) The reservoir can be reconfigured by a plurality of reservoir units by changing a connection relationship between the reservoir units.
(226) Each of the reservoir units is an operation unit block that executes a predetermined operation and includes an operation circuit (an operation circuit of a DRU in the example of
(227) The operation unit block includes a first adder (the adder 231 in the examples of
(228) As an example of the configuration, in the reservoir computing data flow processor, a first block configured to connect the reservoir units (the CBs 111 to 116 in the example of
(229) As an example of the configuration, in the reservoir computing data flow processor, the reservoir is able to be reconfigured in a programmable manner (i.e., programmable).
(230) As an example of the configuration, in the reservoir computing data flow processor, the reservoir is able to be reconfigured on the basis of predetermined information in accordance with a desirable data flow graph (reconfiguration is performed by the data flow controller 22 in the example of
(231) As an example of the configuration, in the reservoir computing data flow processor, a plurality of operation unit blocks are arranged in parallel in a space domain. Thereby, for example, it is possible to process a plurality of signals at the same time in parallel.
(232) As an example of the configuration, in the reservoir computing data flow processor, a plurality of operation unit blocks are arranged in parallel in a time domain. Thereby, for example, it is possible to process a plurality of signals at different times in the same stage in parallel in the space domain.
(233) As an example of the configuration, in the reservoir computing data flow processor, the first adder performs an addition operation at least on: a signal corresponding to an output signal from the second adder of a previous time (i.e., a time corresponding to the past) or a result of multiplying the signal by a predetermined coefficient; and an input signal of the reservoir or a result of multiplying the input signal by a predetermined coefficient (for example, the examples of
(234) As an example of the configuration, in the reservoir computing data flow processor, the second adder performs an addition operation at least on: an output from the nonlinear operator or a result of multiplying the output by a predetermined coefficient; and a signal corresponding to an output signal from the second adder of another stage among a plurality of stages arranged in parallel in a space domain or a result of multiplying the signal by a predetermined coefficient.
(235) Also, a program for implementing the function of any component of any device such as the above-described reservoir computing data flow processor may be recorded on a computer-readable recording medium and the program may be read and executed by a computer system. Also, it is assumed that the “computer system” used here includes an operating system (OS) and hardware such as peripheral devices. Also, the “computer-readable recording medium” refers to a storage device including a flexible disk, a magneto-optical disc, a read only memory (ROM), a portable medium such as a compact disc (CD)-ROM, and a hard disk embedded in the computer system.
(236) Furthermore, the “computer-readable recording medium” is assumed to include a medium that retains a program for a certain period of time, such as a volatile memory inside a computer system serving as a server or a client when the program is transmitted via a network such as the Internet or a communication circuit such as a telephone circuit. For example, the volatile memory may be a random-access memory (RAM). For example, the recording medium may be a non-transitory recording medium.
(237) Also, the above-described program may be transmitted from a computer system storing the program in a storage device or the like to another computer system via a transmission medium or by transmission waves in a transmission medium. Here, the “transmission medium” for transmitting the program refers to a medium having a function of transmitting information, as in a network such as the Internet or a communication circuit such as a telephone circuit.
(238) Also, the above-described program may be a program for implementing some of the above-described functions. Further, the above-described program may be a so-called differential file capable of implementing the above-described function in combination with a program already recorded on the computer system. The differential file may be referred to as a differential program.
(239) Also, a function of any component of any device such as the above-described reservoir computing data flow processor may be implemented on a microprocessor. For example, each process in the present embodiment may be implemented by a microprocessor that operates on the basis of information such as a program and a computer-readable recording medium that stores information such as a program. Here, in the microprocessor, for example, the function of each part may be implemented by individual hardware or the function of each part may be implemented by integrated hardware. For example, the microprocessor may include hardware and the hardware may include at least one of a circuit that processes a digital signal and a circuit that processes an analog signal. For example, the microprocessor may be configured using one or more circuit devices or/and one or more circuit elements implemented on a circuit board. An integrated circuit (IC) or the like may be used as the circuit device and a resistor, a capacitor, or the like may be used as the circuit element.
(240) Here, for example, the reservoir computing data flow processor may be implemented using various types of digital processors such as a CPU, a graphics processing unit (GPU), and a digital signal processor (DSP) on the basis of data flow representation of the mathematical model of the reservoir shown in the embodiment of the present disclosure. Also, the reservoir computing data flow processor may be, for example, a hardware circuit based on an FPGA. Also, for example, the reservoir computing data flow processor may include a plurality of CPUs, a plurality of FPGAs, or a hardware circuit based on a plurality of ASICs. Also, for example, the reservoir computing data flow processor may include a combination of a plurality of CPUs and a hardware circuit based on a plurality of ASICs. Also, for example, the reservoir computing data flow processor may include one or more of an amplifier circuit and a filter circuit for processing an analog signal.
(241) Although embodiments of the present disclosure have been described above with reference to the drawings, specific configurations are not limited to the embodiments, and other designs and the like may also be included without departing from the scope of the present disclosure.
INDUSTRIAL APPLICABILITY
(242) According to a reservoir computing data flow processor of the present disclosure, it is possible to provide a dedicated device for reservoir computing suitable for configuring a reservoir.
REFERENCE SIGNS LIST
(243) 1 Reservoir computing data flow processor 21 Array 22 Data flow controller 23 Shared storage 41 Input layer 42 Output layer 51(i, j) DRU 52, 53 Connector 111 to 116 CB 121 to 128 IB 211, 311, 411, 511, 611 to 613, 711 to 713, 811 to 813, 911 to 913, 1011 to 1013, 1111 to 1113, 1211 to 1213, 1311 to 1313 Operation unit block 231, 233 Adder 232 Nonlinear operator 251, 253 to 256, 631, 633, 651, 653, 671, 673, 732, 752, 772, 832, 852, 872, 931, 933, 951, 953, 971, 973, 1032, 1052, 1072, 1132, 1152, 1172, 1231, 1233, 1251, 1253, 1271, 1273, 1332, 1352, 1372 Input terminal 252, 632, 652, 672, 731, 751, 771, 831, 851, 871, 932, 952, 972, 1031, 1051, 1071, 1131, 1151, 1171, 1232, 1252, 1272, 1331, 1351, 1371 Output terminal