IP Library Granted Patent US 11,072,067
Granted Patent B2
US 11,072,067 · App. 15/353,492 · Granted Jul 27, 2021

Systems, devices, and methods for distributed artificial neural network computation

Inventor: James Sterling Bergstra (Toronto, CA)
Assignee: KINDRED SYSTEMS INC.
B25J9/161G06N3/0445G06N3/084G05B2219/33025G05B2219/33027Y10S901/01Y10S901/02
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,072,067
App. No.
15/353,492
Granted
Jul 27, 2021
Kind
B2
Abstract

Robots and robotic systems and methods can employ artificial neural networks (ANNs) to significantly improve performance. The ANNs can operate alternatingly in forward and backward directions in interleaved fashion. The ANNs can employ visible units and hidden units. Various objective functions can be optimized. Robots and robotic systems and methods can execute applications including a plurality of agents in a distributed system, for instance with a number of hosts executing respective agents, at least some of the agents in communications with one another. The hosts can execute agents in response to occurrence of defined events or trigger expressions, and can operate with a maximum latency guarantee and/or data quality guarantee.

Claims (79)

1. A method of operation of an artificial neural network, including a plurality of variables, the plurality of variables representing a state of one or more units of the artificial neural network, a plurality of parameters, the plurality of parameters representing weights of the one or more units and edges connecting the units, and a plurality of buffers including a first buffer and a second buffer, the buffers each storing and updating a respective collection of values for the plurality of variables and the plurality of parameters, the method comprising:

computing, over a first period, by at least one hardware processor and using the first buffer, a first plurality of values for the plurality of variables based, at least in part, on a first plurality of values for the plurality of parameters;

transferring, to the second buffer, by the at least one hardware processor, current values for the plurality of variables at the end of the first period that have been computed by the at least one hardware processor and using the first buffer;

calculating, over a second period, by the at least one hardware processor and using the first buffer, a first plurality of incremental errors for the artificial neural network that occurred over the first period;

generating, by the at least one hardware processor, a second plurality of values for the plurality of parameters based, at least in part, on the first plurality of incremental errors;

storing in the first buffer, by the at least one hardware processor, the second plurality of values for the plurality of parameters;

interleaved with the calculating of the first plurality of incremental errors using the first buffer over the second period, computing, over a third period, by the at least one hardware processor and using the second buffer, a second plurality of values for the plurality of variables based, at least in part, on (a) the stored current values for the plurality of variables at the end of the first period and (b) the first plurality of values for the plurality of parameters, wherein the second period at least partially overlaps with the third period;

transferring, to the first buffer, by the at least one hardware processor, current values for the plurality of variables at the end of the third period that have been computed by the at least one hardware processor and using the second buffer; and

returning, by the at least one hardware processor, the second plurality of values for the plurality of parameters.

2. The method of claim 1 , further comprising:

computing, by the at least one hardware processor, over a fourth period, a third plurality of values for the plurality of variables in the artificial neural network based, at least in part, on the second plurality of values for the plurality of parameters;

calculating, by the at least one hardware processor, over a fifth period, a second plurality of incremental errors for the artificial neural network that occurred over the fourth period;

generating, by the at least one hardware processor, a third plurality of values for the plurality of parameters; and

interleaved with calculating the second plurality of incremental errors for the artificial neural network, computing, by the at least one hardware processor, over a sixth period, a fourth plurality of values for the plurality of variables for the artificial neural network based, at least in part, on the second plurality of values for the plurality of parameters, wherein the fifth period at least partially overlaps with the sixth period.

3. The method of claim 1 , further comprising:

storing, by the at least one hardware processor, the first plurality of values for the plurality of variables for the artificial neural network.

4. The method of claim 1 wherein the artificial neural network is associated with an objective function, the method further comprising:

computing, by the at least one hardware processor, a gradient for the objective function with respect to the plurality of parameters; and

performing, by the at least one hardware processor, gradient descent with the gradient to create the second plurality of values for the plurality of parameters.

5. The method of claim 4 wherein computing the gradient for the objective function with respect to the parameters comprises:

unfolding, by the at least one hardware processor, the artificial neural network over a duration less than or equal to the first period; and

performing, by the at least one hardware processor, backpropagation through time on the unfolded artificial neural network.

6. The method of claim 1 , further comprising:

receiving, by the at least one hardware processor, a plurality of input values for the artificial neural network.

7. The method of claim 1 , further comprising:

producing, by the at least one hardware processor, a plurality of output values for the artificial neural network; and

causing, by the at least one hardware processor, a robot to move based on the plurality of output values.

8. The method of claim 1 , further comprising:

computing, by the at least one hardware processor for another artificial neural network that includes another plurality of variables and another plurality of parameters, a first plurality of values for the other plurality of variables of the other artificial neural network based on a first plurality of values for the other plurality of parameters;

running, by the at least one hardware processor, the other artificial neural network backward over the first period;

generating, by the at least one hardware processor, a second plurality of values for the other plurality of parameters; and

interleaved with computing, for the other artificial neural the first plurality of values for the other plurality of variables of the other artificial neural network, computing, by the at least one hardware processor, a second plurality of values for the other plurality of variables for the other artificial neural network over the third period.

9. The method of claim 1 wherein behaviors of the artificial neural network are described by a system of differential equations, the method further comprising:

numerically integrating, by the at least one hardware processor, the system of differential equations.

10. The method of claim 1 wherein generating the second plurality of values for the plurality of parameters comprises:

identifying, by the at least one hardware processor, a system model for a robot; and

returning, by the at least one hardware processor, a system model for the robot.

11. A system, comprising:

at least one processor;

at least one non-transitory computer-readable storage media communicatively coupled to the at least one processor, and which stores at least one of processor-executable instructions or data thereon which when executed causes the at least one processor to:

initialize implementation of an artificial neural network including a plurality of parameters and a plurality of variables;

compute, over a first period, a first plurality of values for the plurality of variables based, at least in part, on a first plurality of values for the plurality of parameters;

store current values for the plurality of variables at the end of the first period in a second buffer;

calculate, over a second period, by using a first buffer, a first plurality of incremental errors for the artificial neural network that occurred over the first period;

generate a second plurality of values for the plurality of parameters based, at least in part, on the first plurality of incremental errors for the artificial neural network;

store the second plurality of values for the plurality of parameters in the first buffer;

interleaved with the calculation of the first plurality of incremental errors for the artificial neural network, compute, over a third period, by using the second buffer, a second plurality of values for the plurality of variables based, at least in part, on (a) the stored current values for the plurality of variables at the end of the first period and (b) the first plurality of values for the plurality of parameters, wherein the second period at least partially overlaps with the third period;

store current values for the plurality of variables at the end of the third period that have been computed by using the second buffer to the first buffer; and

return the second plurality of values for the plurality of parameters.

12. The system of claim 11 wherein, when executed, the processor-executable instructions further cause the at least one processor to:

compute, over a fourth period, a third plurality of values for the plurality of variables based, at least in part, on the second plurality of values for the plurality of parameters;

calculate, over a fifth period, a second plurality of incremental errors for the artificial neural network that occurred over the fourth period;

generate a third plurality of values for the plurality of parameters; and

interleaved with the calculation of the second plurality of incremental errors for the artificial neural network, compute, over a sixth period, a fourth plurality of values for the plurality of variables based, at least in part, on the second plurality of values for the plurality of parameters, wherein the fifth period at least partially overlaps with the sixth period.

13. The system of claim 11 wherein the artificial neural network is associated with an objective function, and when executed, the processor-executable instructions further cause the at least one processor to:

compute a gradient for the objective function with respect to the plurality of parameters; and

perform gradient descent with the gradient creating the second plurality of values for the plurality of parameters.

14. The system of claim 13 wherein, when executed, the processor-executable instructions further cause the at least one processor to:

unfold the artificial neural network over a duration less than or equal to the first period creating an unfolded artificial neural network; and

perform backpropagation through time on the unfolded artificial neural network.

15. The system of claim 11 , further comprising:

a sensor subsystem coupled to the at least one processor; and

where, when executed, the processor-executable instructions further cause the at least one processor to:

receive a plurality of input values for the artificial neural network from the sensor subsystem.

16. The system of claim 11 , further comprising:

a robot coupled to the at least one processor; and

where, when executed, the processor-executable instructions further cause the at least one processor to:

produce a plurality of output values for the artificial neural network; and

cause the robot to move based on the plurality of output values.

17. The system of claim 11 , further comprising:

a network interface subsystem coupled to the at least one processor; and

where, when executed, the processor-executable instructions further cause the at least one processor to:

send to at least one external system, via the network interface subsystem, the plurality of variables of the artificial neural network; and

send to at least one external system, via the network interface subsystem, the plurality of parameters of the artificial neural network.

18. The system of claim 11 , further comprising:

a network interface subsystem coupled to the at least one processor; and

where, when executed, the processor-executable instructions further cause the at least one processor to:

receive the plurality of variables of the artificial neural network; and

receive the plurality of parameters of the artificial neural network.

Assignments (3)
MERGER Recorded May 1, 2023
From: KINDRED SYSTEMS INC.
To: OCADO CANADA HOLDINGS INC.
Reel/Frame 063503/0314 →
CHANGE OF NAME Recorded May 1, 2023
From: OCADO CANADA HOLDINGS INC.
To: KINDRED SYSTEMS II INC.
Reel/Frame 063503/0343 →
CONFIRMATORY ASSIGNMENT DOCUMENT Recorded May 1, 2023
From: KINDRED SYSTEMS II INC.
To: OCADO INNOVATION LIMITED
Reel/Frame 063503/0359 →
Continuity (2)
Provisional Application 62255899 · Nov 16, 2015
Related Publication 20170140259A1 · May 18, 2017