The present invention relates generally to training of artificial neural networks.
Artificial neural networks (ANNs) have been developed to perform computational tasks in a manner inspired by biological architectures of the nervous system. These networks are based on a principle of biological systems whereby neurons are interconnected via synapses which relay signals between the neurons. A biological neuron processes its input signals and generates output signals which are transmitted to other neurons via respective synapses. The strength of the signal transmitted by a synapse depends on conductance, also known as “synaptic efficacy” or “weight”, of the synapse. Synaptic weight can be changed by neuronal activity, and this “plasticity” of synapses is crucial to memory and other brain functions. Artificial neural networks are based on a logical construction in which a succession of layers of neurons are interposed with layers of synapses, with each synapse interconnecting a respective pair of neurons in successive neuron layers. Signals relayed via synapses are weighted according to respective synaptic weights stored for the synapses. Weighted signals can thus be propagated over successive layers of the network from an input to an output neuron layer.
ANNs have been successfully applied in various complex analysis tasks such as speech and image recognition, e.g. classification of hand-written digits based on the MNIST (Modified National Institute of Standards and Technology) dataset. ANN operation involves a training phase in which the synaptic weights are determined. The network is exposed to a set of training data, e.g. image data for hand-written digits, in an iterative training scheme in which the weights are repeatedly updated as the network “learns” from the training data. In supervised learning of hand-written digits, for example, MNIST data for which the labels (here digit class from 0 to 9) are known is repeatedly supplied to the network. The output signals from the last neuron layer are compared to the expected network output for each digit to determine errors, and the weights are repeatedly updated to reduce the error until a convergence condition is reached. In particular, the steps of the iterative training process involve a forward propagation operation, a backpropagation operation, and a weight-update operation. In the forward propagation operation, signals derived from the training data are propagated from the input neuron layer to the output neuron layer. The resulting error signals are then propagated back through the network, from the output to the input neuron layer, in the backpropagation operation to obtain error signals for neurons in each layer except the input layer. In the weight-update operation, the synaptic weights are then updated based on these error signals and the neuron output signals during forward propagation.
Training of ANNs, which may have multiple (e.g. 10 or more) neuron layers and millions of synaptic weights, is a computationally intensive task requiring substantial processing resources and extensive training time. Analog training methods based on crossbar arrays of memristive synapses have been proposed to alleviate these problems. These methods exploit the parallel computational capabilities of arrays of memristive devices, connected between row and column lines for applying signals to the devices, where each device implements a synapse with a weight corresponding to the (variable) device conductance. Such methods are described in: “Experimental demonstration and tolerancing of a large-scale neural network (165 000 synapses) using phase-change memory as the synaptic weight element”, Burr et al., IEEE Transactions on Electron Devices 62(11), pp. 3498-3507, 2015; and “Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices: Design Considerations”, Gokmen & Vlasov, Frontiers in Neuroscience, Vol. 10, 2016. These systems perform the forward propagation, backpropagation, and weight-update computations on the memristive arrays by applying signals to the row and/or column lines, with pulsed signals, derived from the forward propagation signals and backpropagated errors, applied simultaneously to the row and column lines of a device for the weight-update operation. By exploiting the capabilities of memristive arrays in this way, these methods dramatically reduce computational complexity associated with ANN training. With both systems, however, there is a significant reduction in training accuracy compared to a high-precision 64-bit floating-point digital implementation. The Burr system is highly sensitive to device imperfections, and the Gokmen system would require an unachievably large number of conductance states for existing memristive devices to obtain an accuracy comparable to a floating-point implementation.
According to at least one embodiment of the present invention there is provided a method for training an artificial neural network having a succession of layers of neurons and a set of crossbar arrays of memristive devices, connected between row and column lines, implementing layers of synapses interposed with the neuron layers. Each memristive device stores a weight Ŵ for a synapse interconnecting a respective pair of neurons in successive neuron layers. The method comprises performing forward propagation, backpropagation and weight-update operations of an iterative training scheme by, in at least one of the forward propagation and backpropagation operations of the scheme, applying input signals, associated with respective neurons, to one of row and column lines of the set of arrays to obtain output signals on the other of the row and column lines, and storing digital signal values corresponding to the input and output signals in a digital processing unit operatively coupled to the set of arrays. The weight-update operation of the scheme is performed by calculating, in the digital processing unit, digital weight-correction values ΔW, dependent on the stored digital signal values, for respective memristive devices, and applying programming signals to those devices to update the stored weights Ŵ in dependence on the respective digital weight-correction values ΔW.
Embodiments of the invention provide mixed-precision ANN training methods in which a set of memristive arrays are used for (inherently low-precision) computation in one or both of the forward and backpropagation steps, and a digital processing unit is used to perform a weight-update calculation for the weight-update step. This involves calculating a digital weight-correction value ΔW, i.e. corresponding to an incremental change in a stored weight, for a memristive device, as a specific step of the weight update calculation. This calculation is performed with digital precision and the resulting digital values are then used to determine the programming signals applied to memristive devices to update the stored weights. This technique offers improved accuracy in the weight-update operation while retaining benefits associated with memristive arrays, i.e. significant speed, power and areal-density advantages. Embodiments of the invention thus offer fast, efficient ANN training methods based on memristive arrays. Accuracies comparable with floating-point implementations can be readily achieved as demonstrated for embodiments described below.
Preferred embodiments perform at least the forward propagation operation on the memristive arrays by applying the input signals to row lines of the set of arrays to obtain output signals on the column lines. To further exploit the parallel computational facility of memristive arrays, the backpropagation is preferably also performed on the array set by applying input signals to column lines of the set of arrays to obtain output signals on the row lines.
In a first weight update procedure, the digital processing unit may round each weight-correction value ΔW with a predetermined step-size ε to produce a rounded correction value Δ{tilde over (W)}. A programming signal applied to a memristive device then adjusts the stored weight Ŵ by an amount dependent on the rounded correction value Δ{tilde over (W)} for that device. This performs incremental update of the stored weights, as opposed to full reprogramming of new weights, with the advantage that the set of weights need not be stored in the digital processing unit.
In other embodiments, the digital processing unit may store digital weight values W corresponding to the weights Ŵ stored by respective memristive devices. In a second weight update procedure here, the digital processing unit may calculate new digital weight values for respective devices from the stored digital weight value and the digital weight-correction value ΔW for each device. A programming signal applied to a memristive device is then dependent on the new digital weight value for that device. This offers superior accuracy since new weight values are calculated with digital precision from the currently-stored weight values W as: new W=current W+ΔW, whereby no information about ΔW is lost due to rounding as in the first method above.
In particularly preferred embodiments, the digital processing unit stores digital accumulation values χ for respective memristive devices. In a third weight-update procedure here, the digital processing unit calculates updated accumulation values for respective memristive devices from the weight-correction value ΔW and stored accumulation value χ for each device, and determines a weight adjustment amount A from the updated accumulation value for each device. A said programming signal applied to a memristive device then adjusts the stored weight Ŵ by an amount corresponding to the weight adjustment amount A for that device. The digital processing unit calculates new digital accumulation values for respective devices by subtracting the weight adjustment amount from the updated accumulation value for each device. This offers exceptionally accurate and efficient operation, retaining full accuracy of ΔW in the accumulation values χ, as explained further below.
In the third weight-update procedure, the weight adjustment amount A may be determined by rounding the updated accumulation value for each memristive device with a predetermined step-size ε, indicative of weight-change of the device in response to application of a predetermined programming pulse, to obtain a number n of said programming pulses to be applied to the device. This allows simple implementation of programming signals as n pulses for each device. In other embodiments here, the digital processing unit determines the weight adjustment amount A by comparing the updated accumulation value for each memristive device with a predetermined threshold dependent on the step-size ε. If the updated accumulation value exceeds this threshold, a programming pulse is applied to the device. This allows programming signals to be implemented by a single pulse, so only one pulse is required per weight update.
At least one further embodiment of the invention provides apparatus for implementing an artificial neural network. The apparatus comprises a memcomputing unit and a digital processing unit operatively coupled to the memcomputing unit. The memcomputing unit comprises a set of crossbar arrays of memristive devices connected between row and column lines, each memristive device storing a weight Ŵ for a respective synapse, and a controller for controlling application of signals to the memristive devices via the row and column lines. The digital processing unit is adapted to control performance by the apparatus of forward propagation, backpropagation and weight-update operations of an iterative training scheme in accordance with a method described above.
Embodiments of the invention will be described in more detail below, by way of illustrative and non-limiting example, with reference to the accompanying drawings.
The second array a2 of array-set 6 implements the layer of synapses sjk between the second and third neuron layers of ANN 1. Structure corresponds directly to that of array a1. Hence, devices 10 of array a2 store weights Ŵjk for synapses sjk, with row lines rj representing connections between respective layer 2 neurons n2j and synapses sjk, and column lines ck representing connections between respective output layer neurons n3k and synapses sjk.
Controller 7 provides the control circuitry for controlling application of signals to memristive devices 10 via the row and column lines of the arrays. As explained in detail below, signals are input to and output from the arrays in a “read” mode used for computation operations of apparatus 2, and programming signals are applied to memristive devices 10 in a “write” (programming) mode used for weight-update operations. The read/write control circuitry can be implemented in generally known manner according to the particular memristive synapse implementation in devices 10. A variety of memristive synapse devices are known in the art, e.g. based on resistive memory cells such as phase-change memory (PCM) cells. These devices comprise one or more memory cells which can be arranged in various circuit configurations to store information in the programmable conductance state of the cells. Preferred embodiments herein employ memristive devices based on a plurality of PCM cells, providing multi-bit storage of information, as described in more detail below. Controller 7 also controls input and output of data from/to system bus 5 by memcomputing unit 3 in operation.
Digital processing unit (DPU) 4 is adapted to control performance by apparatus 2 of operational steps of an iterative training scheme for ANN 1. The training process is controlled by CPU 7 via execution of program instructions loaded from program modules 9 in memory 8. Memory 8 also stores various data used by CPU 7 in operation, including data items supplied to, and received from, memcomputing unit 3 in the various steps of the training process. CPU 7 performs the calculations required in DPU 4 during the training process, and controls input and output of data from/to system bus 5 by DPU 4. CPU 7 also controls the operating mode of memcomputing unit 3 via control instructions sent via bus 5 to controller 7.
While an exemplary embodiment of apparatus 2 is described, DPU 4 may comprise one or more CPUs (including GPUs (graphics processing units)) which may be implemented by one or more microprocessors. Memory 8 may comprise one or more data storage entities, and may comprise main memory, e.g. DRAM (dynamic random access memory) and/or other storage which is physically separated from CPU 7, as well as cache and/or other memory local to CPU 7. In general, DPU 4 may be implemented by one or more (general- or special-purpose) computers/programmable data processing apparatus, and functional steps of processing operations performed by DPU 4 may be implemented in general by hardware or software or a combination thereof. Controller 7 may also comprise one or more processors which are configurable by software instructions to control memcomputing unit 2 to perform functions described below. Particular functional steps performed by controller 7 may be implemented in hardware or software or a combination thereof. Suitable software for implementing functional steps described will be readily apparent to those skilled in the art.
In some embodiments, DPU 4 and/or controller 7 may include electronic circuitry such as programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) for executing program instructions to implement functions described. Where embodiments are described with reference to flowchart illustrations, it will be understood that each block of the flowchart illustrations and/or combinations of blocks in the flowchart illustrations can be implemented by computer-executable program instructions. Program instructions/program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Blocks or combinations of blocks in a flowchart illustration may also be implemented by special-purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
System bus 5 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.
In general, the layers of synapses sij, sjk of ANN 1 may be implemented by one or more crossbar arrays of memristive devices 10. It will be appreciated that “rows” and “columns” of these arrays are logical designations only, and do not imply any constraint as to physical orientation or arrangement of components. In a typical PCM-based device array, however, devices and supply lines are arranged in a regular array of rows and columns as indicated schematically in
In the embodiment detailed below, the functionality of a neuron n1i, n2j, n3k of ANN 1 is effectively implemented in DPU 4 by applying a predetermined “activation” function to neuron input signals to generate the neuron output signals supplied as input to the next ANN layer. In the training operation of apparatus 2, input data for a training sample (e.g. pixel data for an image of a handwritten digit from the MNIST training dataset), is stored in memory 8. The input data points (e.g. image pixels) are notionally mapped to input-layer neurons n1i in accordance with a predetermined mapping which remains fixed for ANN operation. Training data typically comprises a huge number of samples (e.g. thousands of samples of hand-written digits) which are input to the network in the training process. During this process, the apparatus 2 implements an iterative method in which the weights Ŵij, Ŵjk stored by memristive devices 10 are repeatedly updated. In particular, DPU 4 controls performance by apparatus 2 of forward propagation, backpropagation and weight-update operations of an iterative training scheme described below.
Basic steps of the training scheme are indicated in the flowchart of
The weights Ŵ stored in memristive arrays 6 may be initialized to predetermined values, or may be randomly distributed for the start of the training process. Particular constraints on the weight distribution for initialization may depend on e.g. network size and the neuron activation function ƒ (described below) for a given convergence condition to be achieved. Weight update step 32 may be performed for every iteration, or after a predetermined number of backpropagation operations, and may involve update of all or a selected subset of the weights Ŵ as described further below. In any case, the weights Ŵ are repeatedly updated during the training process as the network learns from the training data.
x
2j=ƒ(ΣiŴijx1i).
The signal values x2j are stored in memory 8 in step 47. The DPU thus implements the layer 2 neurons n2j by applying the activation function ƒ to the digital signal values corresponding to the array output signals obtained from the preceding neuron layer to produce the digital signal values corresponding to the array input signals associated with those neurons n2j.
Steps 43 to 47 above implement forward propagation of signals between layers 1 and 2 of ANN 1. Steps 48 to 52 correspond to steps 43 to 47 respectively but propagate signals between layers 2 and 3. Hence, input signals associated with the neurons n2j are applied to row lines rj of array a2 in step 49 to obtain output signals on the column lines ck. The corresponding digital signal values ΣjŴjkx2i are supplied to DPU 4 which calculates the digital signal values x3k for the output neurons n3k as:
x
3k=ƒ(ΣjŴjkx2j).
The signal values x3k provide the network output for the forward propagation operation.
Corresponding analog voltage signals, associated with respective neurons n3k, are thus applied as input signals to respective column lines ck of the array as indicated schematically in
δ2j=ΣkŴjkδ3k·g(ΣiŴijx1i).
where g represents a non-linear function different to the activation function ƒ and comprises the derivative off in the specific case where the training algorithm minimizes the mean square error objective function. The respective error values δ2j for neurons in layer 2 are thus based on the digital signal values ΣkŴjkδ3k corresponding to the array output signals obtained from the preceding neuron layer in the backpropagation operation (layer 3) and the array output signals ΣiŴijx1i obtained from the preceding neuron layer (layer 1) in the forward propagation operation. The error values δ2j are stored in memory 8 in step 66.
Steps 62 to 66 above implement backpropagation of error signals between layers 3 and 2 of ANN 1. For ANNs with additional hidden layers, steps 62 to 66 would be repeated for each subsequent neuron layer up to the penultimate neuron layer in the backpropagation direction. Since layer 2 is the penultimate layer in this example, step 66 completes the backpropagation operation here.
ΔWij=ηx1iδ2j
where η is a predefined learning parameter for the network. The weight-correction value ΔWij for a device corresponding to a synapse sij interconnecting a pair of neurons n1i and n2j in ANN 1 is thus calculated as a function of the input signal received from neuron n1 in the forward propagation operation and the error signal calculated for neuron n2 in the backpropagation operation. In step 72, DPU 4 rounds each weight-correction value ΔWij with a predetermined step-size ε to produce a rounded correction value Δ{tilde over (W)}ij, i.e. Δ{tilde over (W)}ij=round(ΔWij/ε). Conventional or stochastic rounding may be used here as desired. The step size ε preferably indicates the weight-change of a memristive device in response to application of a predetermined programming pulse, i.e. a pulse of predetermined amplitude and duration. In step 73, DPU 4 sends the rounded correction values Δ{tilde over (W)}ij for devices 10 to memcomputing unit 3 and sets controller 7 to the programming mode. In step 74, controller 7 applies a programming signal to each device 10 to adjust the stored weight Ŵij by an amount dependent on the rounded correction value Δ{tilde over (W)}ij for that device. The programming signal here may comprise a number of the aforementioned programming pulses corresponding to the rounded correction value Δ{tilde over (W)}ij. The resulting stored weight is thus updated to Ŵij+Δ{tilde over (W)}ij=new Ŵij.
In some embodiments, weight-correction values ΔWij may be computed for all devices 10 in the array. In others, ΔWij may be computed for only a subset of devices, e.g. a randomly-selected subset, or devices for which x1i and/or δ2j exceed a threshold level. In general, error values δ2j may be positive or negative, whereby weights may be increased (“potentiated”) or decreased (“depressed”) according to sign of Δ{tilde over (W)}ij. Programming pulses, and the step size ε, may differ for potentiation and depression depending on characteristics of the memristive devices. Also, weight updates may be performed after backpropagation in every iteration of the training scheme (“online training”), or after a certain number K of iterations (“batch training”). In the latter case, weight-correction values ΔWij can be accumulated in DPU 4 over K training samples.
Weights Ŵjk of devices in array a2 are similarly updated based on rounded weight correction values Δ{tilde over (W)}jk calculated from the digital weight-correction values ΔWjk=ηx2jδ3k for these devices. Steps of the
The above system implements a mixed-precision ANN training method in which the low-precision memristive arrays are exploited for the forward and backpropagation computations, but the weight-update operation is based on weight-correction values ΔW calculated digitally in the DPU 4. The weight-correction values are thus calculated with digital precision, preferably at least 16-bit (fixed- or floating-point) precision, and the resulting digital values are used to determine programming signals for the arrays. This technique improves accuracy in the weight-update operation while exploiting the high-speed, low-power parallel computing capabilities of the memristive arrays. The stored weights are incrementally updated, as opposed to fully reprogrammed, and sets of weights for the memristive arrays need not be stored in DPU 4, reducing memory requirements.
Following training of ANN 1, the apparatus 2 can be used in a test (or “inference”) mode to classify input data based on the trained weights Ŵij, Ŵjk. In the inference mode, input data (e.g. MNIST test digits) are supplied to the network which operates in the forward propagation mode, and the input data is classified (e.g. as digit 0 to 9) based on the network output. Classification can be performed in DPU 7 using a softmax function for example.
With the first weight-update method above, classification accuracy may be reduced if the step-size ε is large or the weight-updates are performed in an inaccurate manner. This is because accurate information about ΔW is lost after rounding so that errors cannot be accounted for in a precise manner. Preferred weight-update procedures addressing this issue are described in the following.
ΔWij=ηx1iδ2j
In step 82, DPU 4 retrieves the digital weight values W for respective devices 10 from memory 8. In step 83, DPU 4 calculates new digital weight values for respective devices from the current digital weight value W and the digital weight-correction value ΔW calculated in step 81 for each device: Wij+ΔWij=new Wij. This calculation is thus performed with digital precision, preferably high precision, i.e., at least 16-bit precision and may be performed with e.g. 32- or 64-bit precision if desired. In step 84, DPU 4 controls memcomputing unit 3 to apply a programming signal to each device 10 dependent on the new digital weight value Wij for that device.
In one implementation here, step 84 may be performed by reading the weights Ŵ stored by respective memristive devices via read-mode operation of controller 7, and then calculating, in DPU 4, a difference between the new digital weight value W for a device and the read weight Ŵ for that device. A programming signal is then applied to the device to adjust the stored weight Ŵ by an amount dependent on the calculated difference for that device. The difference values here may be (deterministically or stochastically) rounded according to a step size ε indicating weight-change of a device in response to application of a predetermined programming pulse, and the programming signal here may comprise a number of programming pulses corresponding to the rounded difference value. The stored weights Ŵij are thus incrementally updated.
In another implementation of step 84, instead of incremental updates the weights Ŵij may be completely reprogrammed. In this case, programming signals are applied to reprogram each device based on the new digital weight value W for the device. This may be performed, for example, by a program-and-verify scheme in which a weight is iteratively programmed and read to bring Ŵij as close as possible to the corresponding digital value W. A (deterministically or stochastically) rounded version of W may also be used here.
The
The
A first example of the procedure for calculating the weight update amount Aij is illustrated in
The
Weight update methods based on
Numerous changes and modifications can of course be made to the exemplary embodiments described. For example, embodiments can be envisaged in which the training method uses memcomputing unit 3 for only one of the forward and backpropagation steps. For example, the forward computation may be performed using array-set 6, with backpropagation computations done in DPU 4. Also, while the neuron activation function ƒ is implemented with high precision in DPU 4 above, in other embodiments the neuron functionality may be implemented by analog circuits in memcomputing unit 3.
In general, memristive devices 10 may be implemented in any desired manner, e.g. based on one or a plurality of PCM cells and/or other memristive memory elements in various circuit arrangements. Any type of memristive memory element may be used, e.g. PCM or other resistive memory cells such as resistive RAM (RRAM, or ReRAM) cells including conductive bridge RRAM cells, oxide or metal-oxide RRAM cells, carbon RRAM cells, and magneto-resistive random access memory (MRAM) elements, ferroelectric random access memory (FeRAM) elements, optical memory elements, and circuit devices, e.g. CMOS circuits, comprising transistors, resistors, capacitors, and/or inductors, emulating behavior of memristive elements.
In some cases, steps of flow diagrams may be implemented in a different order to that shown and steps may be performed in parallel as appropriate.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
This application claims the benefit of U.S. Provisional Patent Application No. 62/576,081 filed on Oct. 24, 2017, the complete disclosure of which is expressly incorporated herein by reference in its entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
62576081 | Oct 2017 | US |