Most processing technology today relies on electricity. For example, in a typical semiconductor processor, electrons move within transistors for the processor to function. Such processors, when appropriately configured, are the current mainstay in digital technology, which represents information as discrete one or zero bits. However, optical processing technology has slowly been advancing. Optical processing technology relies on light with an adjunct of electronics. In optical processors, photons move within optical and electro-optical devices, causing the processor to function. Optical processors are usually analog technology, in which information can be represented on a continuous (i.e., grayscale) basis.
One type of analog optical processor is a matrix-vector (M-V) processor, which computes the product of an input vector and a matrix. Such processors are useful in artificial intelligence (AI) technologies, such as neural networks. M-V multiplication for a vector c, equal to (c1, . . . , ci, . . . , cN), is computed as shown in equation (1) for each ith-component of vector c.                               c          i                =                              ∑                          j              =              1                        N                    ⁢                                    a              ij                        ⁢                          b              j                                                          (        1        )            Components aij and bj can be represented in analog by two optical devices exhibiting grayscale. The components are analog in optical transmittance that is normalized to the maximum transmittance possible. For example, let aij and bj values be 0.5-grayscale for both devices with 1.0-grayscale as the normalized maximum transmittance. Light passing through both devices will have a value of 0.25-grayscale. For the calculation of two numbers, however, each device could be representing a number from 0 to 100. Thus, the output of both devices represents numbers from 0 to 10,000 (i.e., 02 to 1002). Because each device is at 0.5-grayscale, each device represents the number 50 (0.5 times 100). The output of both devices is representing the number 2,500 (0.25 times 10,000). Thus, the output has performed a multiplication, because 50 times 50 is 2,500.
Thus, when light passes through both devices representing the aij and bj values, the transmittance of the light is the product, or aijbj. The summation of the aijbj values for ci is accomplished by combining the relevant individual light beams with a cylindrical lens, and imaging the beams on the ith-detector of a detector array. N light beams for each of the N components of vector c are imaged in parallel on the detector array. Each detector in the array has an analog response to the light beams, so that each detector has a component of vector c in an analog form. The components are then converted to digital by an analog-to-digital (A/D) converter.
A limitation in using analog optical M-V processors, and other types of analog optical multiplication processors, is that non-uniformities in the optical devices representing the components to be multiplied cause errors in the resulting product. This limits the bit-width of these processors. The non-uniformities make it difficult to accurately represent the values for the components aij and bj in grayscale, because the grayscale responses for each component commonly differ from each other. A single A/D converter is used to convert the analog to the digital in the optical M-V processor. The A/D converter is designed by the characteristics of all of the optical devices in the processor. Non-uniformity implies a range of different characteristics. Thus, an A/D converter cannot be well design to accurately make the numerical conversions from grayscale. Since the uniformities, and lack thereof, determine the bit-width of the answers generated by analog optical processors, compensating for non-uniformities is important to achieving a high bit-width, which is necessary to have high-precision optical processors.
The grayscale response for the components aij and bj are specifically not entirely accurate. Rather, they represent the quantities aij+Δaij and bj+Δbj, where Δaij and Δbj are error values resulting from the non-uniformities of the optical devices. An M-V processor therefore computes the ith-component in vector c as shown in equation (2).                               χ          i                =                                            ∑                              j                =                1                            N                        ⁢                                          (                                                      a                    ij                                    +                                      Δ                    ⁢                                                                                   ⁢                                          a                      ij                                                                      )                            ⁢                              (                                                      b                    j                                    +                                      Δ                    ⁢                                                                                   ⁢                                          b                      j                                                                      )                                              =                                                    ∑                                  j                  =                  1                                N                            ⁢                                                a                  ij                                ⁢                                  b                  j                                                      +                                          a                ij                            ⁢              Δ              ⁢                                                           ⁢                              b                j                                      +                          Δ              ⁢                                                           ⁢                              a                ij                            ⁢                              b                j                                      +                          Δ              ⁢                                                           ⁢                              a                ij                            ⁢              Δ              ⁢                                                           ⁢                              b                j                                                                        (        2        )            The error for a component of the vector c, Δci, is given by equation (3).                                           χ            i                    -                      c            i                          =                              Δ            ⁢                                                   ⁢                          c              i                                =                                                                      ∑                                      j                    =                    1                                    N                                ⁢                                                      a                    ij                                    ⁢                  Δ                  ⁢                                                                           ⁢                                      b                    j                                                              +                              Δ                ⁢                                                                   ⁢                                  a                  ij                                ⁢                                  b                  j                                            +                              Δ                ⁢                                                                   ⁢                                  a                  ij                                ⁢                Δ                ⁢                                                                   ⁢                                  b                  j                                                      =                                          ∑                                  j                  =                  1                                N                            ⁢                              Δ                ⁢                                                                   ⁢                                  c                  ij                                                                                        (        3        )            
As an example, the jth-error for Δci, Δcij, can be determined by assuming that the two components for aij and bj exhibit the following grayscale characteristics. The aij's off state is 0.02-grayscale and on state is 0.95-grayscale. The bj's off state is 0.03-grayscale and on state is 1.05-grayscale. Using the numerical numbers from the earlier example, the input for aij and bj is from 0 to 1000. If the number 50 is input to both aij and bj, the aij component has a grayscale response of 0.485 that represents the number 48.5, and the bj component has a grayscale response of 0.54 that represents the number 54, assuming linearity and ideal control. Therefore, the aij grayscale error, Δaij, is −1.5, and the bj grayscale error, Δbj, is 4. Using equation (3), Δcij=119, which is also (48.5×54)−(50×50)=2619−2500. Thus, the corresponding numerical error is 119.
Therefore, this error must be subtracted in order for the M-V processor to correctly multiply input vectors with matrices. One approach is to subtract Δaij and Δbj within the system. If these error quantities are known, they can be subtracted. Assuming that the two optical devices in the M-V processor representing aij and bj are well characterized, the grayscale responses for all the components can be computed, and their responses compensated. For example, if the number for aij is set to 50, as above, then aij converts to 48.5 as a result of the Δaij error. This error can be adjusted, assuming linearity and ideal control. If 51.6129 is instead input, the aij component converts to 50, the desired value. The conversion to obtain 50 is shown in equation (4).                                                         0.50              -              0.02                                      0.95              -              0.02                                ×          100                =        51.6129                            (        4        )            
In principle, such error compensation could be performed by using digital electrical processing prior to the optical analog processing. However, a large amount of processing is necessary to compensate for all of the components in a modern optical M-V processor to increase the bit-width of the answer. Such an amount of digital electrical processing defeats the performance advantage of the optical processor. Thus, what is needed is a method for improving the bit-width (i.e., the precision) of the optical processor without increasing the overall processing time.