Entity resolution framework for data matching

Systems and methods are described for matching a corrupted database record with a record of a validated database. The system receives a corrupted record from a first database. The corrupted record is vectorized to create an input data vector. A denoised data vector is generated by applying a denoising autoencoder to the input data vector, where the denoising autoencoder is specific to the first database. The system compares the denoised data vector with each of a plurality of validated data vectors generated based on records of the validated database to determine that a first denoised data vector matches a matching vector. In response, the system trains the denoising autoencoder using a data pair that includes the input data vector and the matching vector. The system also outputs the validated record that was used to generate the first matching vector.

BACKGROUND

The present disclosure relates to improved computer data storage and retrieval systems and methods, and more particularly, to techniques for matching a corrupted or incomplete record from a first database to a record in a validated database using a denoising autoencoder (DAE) that is specific to the first database.

SUMMARY

Modern computerized data storage and retrieval applications commonly face a task where a corrupted or incomplete database record from a first database has to be matched with a database record from a validated database. For example, when a financial system needs to make a decision regarding a loan application of an applicant, the financial system commonly needs to match a locally created database record for the applicant with validated record maintained by a trusted provider (e.g., by Experian™ or Equifax™). However, such matching may be difficult or impossible due to the locally created database record being incomplete or otherwise corrupted. For example, some data in the locally created database record may be missing, incomplete, unprocessable or erroneous. A data storage and retrieval application may be unable to definitively match such a corrupted record to a proper validated record. As a result, the financial system will have inaccurate data with which to make decisions (e.g., loan application decisions).

One approach to improving the matching capability of the data retrieval application (DRA) is to denoise the corrupted database record by using a denoising autoencoder (DAE). A typical DAE may provide poor denoising results because it was not trained specifically to denoise records for a database record-matching operation. Furthermore, a typical DAE is not trained to address the specific types of corruption that may be typical for a specific database. Typical DAEs are trained by creating artificial examples where random corruptions are introduced to a DAE vector. Such generic, artificial examples may train the DAE in a suboptimal manner. To overcome these problems, a denoising system and method are provided that use a DAE specific to the first database that is trained using training examples generated by the database record-matching attempts.

In some embodiments, the DRA receives a first corrupted record (e.g., a record with multiple metadata fields) from a first database (e.g., from a financial system). The DRA may generate a first input data vector based on the first corrupted record. For example, the DRA may convert textual metadata fields into numeric (e.g., binary), vector fields, and concatenate the vector fields together. The DRA then selects a denoising autoencoder (DAE) specific to the first database. For example, the DRA may have local or remote access to several DAEs, each configured for processing inputs from corresponding databases. The selected DAE may be already pretrained using a plurality of training example data pair. The training example data pairs may include an automatically generated data pair. For example, an automatically generated data pair may include two vectors, where one vector of the pair is artificially corrupted to generate the second vector of that pair. The training example data pairs may also include pairs specific to the database matching techniques, as will be explained below.

The DRA may generate a first denoised data vector by applying the selected DAE to the first input data vector. For example, the DRA may provide the first input data vector to the locally or remotely stored instance of the selected DAE and set the output of the DAE as the first denoised data vector. The DRA may compare the first denoised data vector with each of a plurality of validated data vectors generated based on records of a validated database. For example, the DRA may compare the first denoised data vector and a plurality of vectors that are generated by vectorizing records of the validated database. In one implementation, the DRA may determine that the first denoised data vector matches a first matching vector of the plurality of data vectors.

The DRA may provide a data pair comprising the first input data vector and the first matching vector as an additional training example data pair to the selected DAE. In another example, the DRA may provide a data pair comprising the first input data vector and the denoised data vector as an additional training example data pair to the selected DAE. In some embodiments, the DAE may then be trained using the new example data pair to better denoise inputs from the first database. The DRA may also retrieve a first validated record that was used to generate the first matching vector from the validated database. The DRA may then output (e.g., display) the retrieved first validated record. In one implementation, the DRA may transmit the retrieved first validated record to the first database for storage, thus improving the accuracy and completeness of the first database. In an implementation, the DRA uses data from the first validated record to make a loan application decision. For example, the DRA may decide whether to authorize or deny the loan application to the user whose data is stored in the first validated record. The DRA may then transmit the loan application decision to the first database.

Once the DAE is further trained using the additional training example, as described above, the DAE may be used to better denoise other corrupted records from the first database. In particular, the more often the process described above is repeated, the better the select DAE becomes at denoising data from the first database. When the next record is received from the first database, the DRA generates a second input data vector based on the second corrupted record and uses the DAE (that was trained using the new example data pairs) to denoise the second input data vector. The DRA compares the second denoised data vector to the plurality of validated data vectors to determine whether the second denoised data vector matches a second matching vector of the plurality of data vectors. If the second matching vector is found, the DRA retrieves and outputs the second validated record, which was used to generate the second matching vector.

DETAILED DESCRIPTION

FIG. 1shows a block diagram for matching a corrupted database record with a record of a validated database using a denoising autoencoder. In particular,FIG. 1shows the operation of a data retrieval application (DRA)100. In some embodiments, some or all of the blocks of DRA100may be implemented on a single computer (e.g., a server) or using a plurality of networked computers (e.g., a server that stores first database102and a server that stores second database124).

In some embodiments, the DRA may receive a corrupted record (e.g., incomplete record104) from first database102. For example, record104may include financial data of a loan applicant as shown in Table 1.

TABLE 1LabelValueDatabase ID13245Bank NameGolden 1First NameJohnLast NameDoeBirthday1980SSNXXX-XX-1234Income$100,000Debt$25,000.00
In another example, record104may include metadata of a media asset (e.g., a TV series episode) as shown in Table 2.

In some embodiments, record104may be corrupted. For example, records of the Golden 1 bank (database host of Table 1) may always contain only last 4 digits of the SSN number with other numbers being replaced with an “X” character. In another example, HBO (database host of Table 2) may always list only the year of the release date, instead of listing the date, month, and the year for the release date. Sometimes, some of the data items of Table 1 and Table 2 may be missing, or may include random noise (e.g., mistyped information).

At106, the DRA may retrieve the database ID (e.g., as shown in Table 1 and Table 2 and the features of the database record (e.g., data items of Table 1 and Table 2). At110, the DRA may vectorize the data fields of record104. For example, the DRA may convert each field of the first plurality of data fields into binary notation. For example, line “HBO” may be converted into ASCII code as “0x480x420x4f” which may be further converted to binary code “010010000100001001001111.” In some embodiments, other vectorization may be used (e.g., a vector encoding may be generated based on word-by-word mapping of words to numbers). The vectors may also be normalized (e.g., by using any known normalization technique). For example, data fields may be arranged in a certain order. The binary codes may also be concatenated to create a vector (X-tilde).

At108, the DRA may select a DAE that is relevant to the source of first database102. For example, the DRA may maintain a DAE for each unique database ID. In some embodiments, some similar databases may share a DAE. In some embodiments, the DRA selects DAE114(e.g., because it is the DAE that was assigned to Database ID No. 13245).

In some embodiments, DRA may maintain a plurality of DAEs in a database of DAEs. Each DAE may have accompanying metadata. For example, the metadata of each DAE may include a field identifying relevant databases that can be denoised by that DAE. In one implementation, field identifying relevant databases includes a list of database numbers. Whenever a record is received from a database, the DRA may access the database of DAEs to receive a list of database numbers for each DAE. The DRA may then search the lists to identify which list contains the database number included in the received record. The DAE associated with the selected list is then selected to process the incoming record.

Once DAE114is selected, the DRA may pass a vector X-tilde through DAE114. In some embodiments, DAE114includes an encoder, a hidden layer, and a decoder (e.g., as will be further explained inFIG. 2). DAE114may produce a denoised vector X. The denoised vector may then be compared to a set of vectors X1-XN. Vectors X1-XN can be generated based on records of second database124as explained below.

Second database124may be a database that has been validated. For example, second database124may be validated financial database maintained by a trusted entity (e.g., by Experian™ or Equifax™). In some embodiments, the DRA may perform blocking126of records of second database124. For example, instead of evaluating all data fields of the second database124, the DRA may access only a subset of the data fields. For example, the DRA may retrieve only data fields listed in Table 1. In some embodiments, the DRA may include data fields known to be precise (e.g., last name). The blocked validated records128may be vectorized130. In some embodiments, the vectorization for each record is performed the same way as vectorization110to produce vectors X1-XN.

At118, the DRA may compare vector X to vectors X1-XN. For example, the DRA may count the percentage of binary pairwise matches between vector X and one of vectors X1-XN. If the percentage exceeds a threshold (e.g., 95%), the DRA may conclude that a match exists. For example, the DRA may determine that vector X matches vector X35.

Once the matching vector is found, the DRA may output122a record that was used to generate the matching vector. For example, the DRA may output Validated Record35when vector X matches vector X35. In some embodiments, the matching record may be sent to database102to improve the data stored in that database, e.g., by replacing incomplete record104with the validated record. In some embodiments, the matching record may be used to perform other functions (e.g., to validate loan applications).

In some embodiments, the matching record may be used to evaluate a loan application based on the validated record from second database124. For example, first database102may be hosted by a financial system that is used by users to apply for a loan. In some embodiments, the financial records of the first database are corrupted or incomplete (which is common for records collected from users). In this example, the DRA uses the validated record instead of the corrupted record of the first database to make a loan decision. For example, the DRA may use factors such as income, debt, and credit score (contained in the validated record) to make the loan decision (e.g., by checking if these features match respective thresholds). The DRA may transmit the loan application decision to first database102. First database102may then be used to inform a user about the loan application decision.

Additionally, a new training example120may be created for DAE114. For example, the pair {X35, X-tilde} may be used as a training example to improve the ability of DAE114to denoise data from first database102. In another, the pair {X, X-tilde} may be used as training example120to improve the ability of DAE114to denoise data from first database102. Once DAE114is trained using the new training example, it will be better able to denoise other records from first database102. Over time, DAE may learn to filter out noisy data specific to first database102. For example, DAE may learn to filter out “XXX-XX-” value from “SSN” field of records of first database102.

FIG. 2shows an illustrative example of a denoising autoencoder200, in accordance with some embodiments of the disclosure. For example, DAE200may be the same as DAE114ofFIG. 1. In some embodiments, DAE200may include three neural networks: input layer204, hidden layer206, and output layer208. Each neural network204,206,208may include multiple neurons and connections between neurons. Each neuron may be a data structure with two states (e.g., {1} or {ON} state, and {0} or {OFF} state). Each neuron may have positive or negative connections to neurons of previous the layer and/or to neurons of the next layer. Each connection may be used to communicate the state of the neuron to other neurons. For example, the positive connection may send the state of neuron, while the negative connection may send the inverse of the state of the neuron. The incoming connections may be used to set the state of the neuron. For example, if more {ON} signals are received than {OFF} signals, the neuron is set to the {ON} state. If more {OFF} signals are received than {ON} signals, the neuron is set to the {OFF} state. The connections may be added or removed as DAE200is trained (e.g., as explained inFIG. 5.)

When a corrupt input vector202(e.g., vector X-tilde) is fed into DAE200, each bit of that vector may be mapped to one of the neurons of layer204. For example, a value of {1} in vector X-tilde may cause the corresponding neuron of input layer204to be set to the {ON} state and a value of {0} in vector X-tilde may cause the corresponding neuron to be set to the {OFF} state. The connections between neurons may then determine the state of the hidden layer206. In some embodiments, hidden layer206may have fewer neurons than layer204. Because DAE200is forced to feed the information through the “bottleneck” of layer206, the transition between layer204and206may be seen as an “encoder” (as shown inFIG. 1).

The connections between neurons in layer206and layers208may then determine the state of the hidden layer208. In some embodiments, hidden layer206may have fewer neurons than layer208. Because DAE200is forced to feeds the information through the “bottleneck” layer206, the transition between layer206and layer208may be seen as a “decoder” (as showing inFIG. 1).

In some embodiments, some or all of the neurons may have a variable weight score. In one implementation, signals from neurons with higher weight scores may count more when determining a state of the next neuron. For example, if a neuron has a weight of “2,” the input from that neuron may be weight the same as inputs from two neurons with weight “1.”

Layer208may then be used to generate output210. For example, a vector may be created based on states of neurons in layer208. For example, a value of {1} in output vector X may be created when the corresponding neuron in layer 208 is set to {ON}, and a value of {0} in output vector X may be created when the corresponding neuron in layer208is set to {OFF}. In some embodiments, because vector X was forced through the “bottleneck” layer206, some of the noise in vector X was eliminated.

FIG. 3shows generalized embodiments of a system that can host a data retrieval application (DRA) in accordance with some embodiments of the disclosure. In system300, there may be multiple devices, but only one of each is shown inFIG. 3to avoid overcomplicating the drawing. Device302may be coupled to communication network304. Device302may be any type of a computing device, such as a server, a desktop, a tablet, a smartphone, any other computing device or any combination thereof. Communication network304may be one or more networks including the Internet, a mobile phone network, mobile voice or data network (e.g., a 4G or LTE network), cable network, public switched telephone network, or other types of communication network or combinations of communication networks. Provider server306(e.g., a server that hosts the first database), processing server308(e.g., a server that hosts the validated database), and device302may be connected to communication path304via one or more communication paths, such as, a satellite path, a fiber-optic path, a cable path, a path that supports Internet communication (e.g., IPTV), free-space connections (e.g., for broadcast or other wireless signals), or any other suitable wired or wireless communication path or combination of such paths.

Although communication paths are not drawn between device302, provider server306and processing server308, these devices may communicate directly with each other via communication paths, such as short-range point-to-point communication paths, such as USB cables, IEEE 1394 cables, wireless paths (e.g., Bluetooth, infrared, IEEE 802-11x, etc.), or other short-range communication via wired or wireless paths. BLUETOOTH is a certification mark owned by Bluetooth SIG, INC. The media devices may also communicate with each other directly through an indirect path via communication network304.

System300includes provider server306coupled to communication network304. There may be more than one of provider server306, but only one is shown inFIG. 3to avoid overcomplicating the drawing. Provider server306may include one or more types of content distribution equipment including a television distribution facility, cable system headend, satellite distribution facility, programming sources (e.g., television broadcasters, etc.), intermediate distribution facilities and/or servers, Internet providers, on-demand media servers, and other content providers. Provider server306may be a server of financial institution. For example, provider server306may store financial records of loan applicants who are applying for a loan via the provider server306. Provider server306may also provide metadata. For example, provider server306may include a database storing metadata of a media asset.

The DRA may be, for example, a stand-alone application implemented on one of provider server306, processing server308, or device302. For example, a DRA may be implemented as software or a set of executable instructions which may be stored in storage358, and executed by control circuitry353of a device302. In some embodiments, DRA may be client-server applications where only a client application resides on the media device, and a server application resides on processing server308. For example, the DRA may be implemented partially as a client application on control circuitry353of device302and partially on processing server308as a server application running on control circuitry of processing server308. When executed by control circuitry of processing server308, the DRA may instruct the control circuitry to generate the DRA output (record of validated database310that matches first database of provider server306) and transmit the generated output to one of device302or provider server306. The server application may instruct the control circuitry of the provider server306to transmit a database record to processing server308or to device302. The client application may instruct control circuitry of the device302to access validated database310, conduct the matching operations as describe above and below and transmit the matching record to provider server306. In some embodiments, any one of provider server306, the processing server308, or device302may include the hardware and software needed to operate a denoising autoencoder (DAE) configured as describe above or below.

Device302may include elements of a computer device351. In some embodiments, provider server306and processing server308may also include some or all elements described in relation to device302. As depicted, computer device351may be any computer system powered by processor374. Computer device351may receive content and data via input/output (hereinafter “I/O”) path352. I/O path352may send database records, DAE service, and other data to control circuitry353, which includes processing circuitry356, display generator circuitry357, and storage358. Control circuitry353may be used to send and receive commands, requests, and other suitable data using I/O path352. I/O path352may connect control circuitry353(and specifically processing circuitry356) to one or more communication paths (described below). I/O functions may be provided by one or more of these communication paths, but are shown as a single path inFIG. 3to avoid overcomplicating the drawing.

Control circuitry353may be based on any suitable processing circuitry such as processing circuitry356. As referred to herein, processing circuitry should be understood to mean circuitry based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multi-core processor (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or supercomputer. In some embodiments, processing circuitry may be distributed across multiple separate processors or processing units, for example, multiple of the same type of processing units (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor). Processing circuitry356may include display generation circuitry357or be separate from display generation circuitry357. Display generation circuitry357may include display generation functionalities that enable generations for display on displays362and/or372. In some embodiments, control circuitry353executes instructions for a user equipment device and/or application stored in memory (i.e., storage358). Specifically, control circuitry353may be instructed by a user equipment device and/or application to perform the functions discussed above and below.

Device302may operate in a cloud computing environment to access cloud services. In a cloud computing environment, various types of computing services for content sharing, storage or distribution (e.g., audio sharing sites or social networking sites) are provided by a collection of network-accessible computing and storage resources, referred to as “the cloud.” Cloud resources may be accessed by device302using, for example, a web browser, a DRA, a desktop application, a mobile application, and/or any combination of the above. Device302may be a cloud client that relies on cloud computing for application delivery, or the media device may have some functionality without access to cloud resources. For example, some applications running on device302may be cloud applications, i.e., applications delivered as a service over the Internet, while other applications may be stored and run on the media device. In some embodiments, a user device may receive content from multiple cloud resources simultaneously. In some embodiments, media devices can use cloud resources for processing operations such as the processing operations performed by processing circuitry. In some embodiments, processing server308and provider server306may also be a part of cloud computing environment. For example, Device302may access one or both of processing server308and provider server306via a cloud service. In such client/server-based embodiments, control circuitry353may include communication circuitry suitable for communicating with one or both of processing server308and provider server306. Communication circuitry may include a cable modem, an integrated services digital network (ISDN) modem, a digital subscriber line (DSL) modem, a telephone modem, an Ethernet card, or a wireless modem for communication with other equipment, or any other suitable communication circuitry. Such communication may involve the Internet or any other suitable communication networks or paths. In addition, communication circuitry may include circuitry that enables peer-to-peer communication of media devices, or communication of media devices in locations remote from each other. In some embodiments, the DRA is a client/server-based application that uses the cloud interface. Data for use by a thick or thin client implemented on computer device351is retrieved on demand by issuing requests to a server remote to the processing server308or provider server306, respectively. For example, computer device351may receive inputs from the user via input interface360and transmit those inputs to a remote server (e.g., to one of processing server308and provider server306) for processing and generating the corresponding outputs. The generated output is then transmitted to computer device351for presentation.

Memory may be an electronic storage device provided as storage358that is part of control circuitry353. As referred to herein, the phrase “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random-access memory, hard drives, optical drives, solid state devices, quantum storage devices, gaming consoles, gaming media, or any other suitable fixed or removable storage devices, and/or any combination of the same. Nonvolatile memory may also be used (e.g., to launch a boot-up routine and other instructions). Cloud-based storage may be used to supplement storage358or instead of storage358.

A user, or another system, may send instructions to control circuitry353using user input interface360of computer device351. User input interface360may be any suitable user interface, such as a remote control, mouse, trackball, keypad, keyboard, touch screen, touchpad, stylus input, joystick, voice recognition interface, or other user input interfaces. Display360may be a touchscreen or touch-sensitive display. In such circumstances, user input interface360may be integrated with or combined with display362. Display372may be provided as a stand-alone device or integrated with other elements of computer device351. Speakers368may be provided as integrated with other elements of computer device351. The audio component of videos and other content displayed on display372may be played through speakers368. In some embodiments, the audio may be distributed to a receiver (not shown), which processes and outputs the audio via speakers368. In some embodiments, device351may include input/outputs other than the user input interface such as network interface or cloud interface. In one implementation, device351may only include input/outputs other than the user input interface and lack any kind of direct input interface360.

Computer device351may include hardware or software DAE module366. In some embodiments, DAE module366may be used to process vectors generated based on records received from the provider server306to be matched with vectors generated based on records received from processing server308. In some embodiments, control circuitry353may be used to execute any functionality of a DRA describe inFIG. 1by using the DAE provided by DAE module366in a manner describe above and below.

FIG. 4is a flowchart of an illustrative process for matching a corrupted database record with a record of a validated database using a denoising autoencoder (DAE), in accordance with some embodiments of the disclosure. In some embodiments, each step of process400can be performed by computer device351(e.g., via control circuitry353) or any of the system components shown inFIG. 3. In another implementation, each step of process400can be performed by computer device processing server308(e.g., via control circuitry353of processing server308)

Process400begins at block402where control circuitry353receives a first corrupted record from a first database (e.g., from a provider server306). In one example, the first database may store financial records of loan applicants. In another example, the first database may store metadata records of media assets. In some embodiments, the first corrupted record may be received via network304.

At404, control circuitry353may generate a first input data vector based on the first corrupted record. For example, control circuitry353may convert data entries of the first corrupted record to binary form and concatenate them together to create an input (e.g., vector X-tilde as shown inFIG. 2.)

At406, control circuitry353may generate a first denoised data vector (e.g., vector X as shown inFIG. 2.) by applying a DEA to the first input data vector. In some embodiments, the DAE may have been selected because it is the DAE that is designated as being dedicated to processing records from the first database. In some embodiments, the DAE may have been pre-trained using steps410-414.

At410, control circuitry353may receive a training example data pair. In some embodiments, the training example data pair is generated by starting with a data vector and introducing random corruptions into that data vector. The training example data pair may also be generated at step432. At412, control circuitry353may train the DAE based on the new data pairs (e.g., as described with respect toFIG. 5). At414, control circuitry353may check if more pairs are available for training. If so, process400may return to block410to receive another data pair. Otherwise, the DAE may be provided to block406to be used in generating a first denoised data vector.

At408, control circuitry353may compare the first denoised data vector with each of a plurality of validated data vectors (e.g., as generated in steps416-418). For example, at416, control circuitry353may access a record of a validated database. For example, the record may be retrieved from a validated database stored at processing server308via network304. In some embodiments, the validated database may be a trusted financial database (e.g., database of a trusted credit score provider). In another example, the validated database may be a database of a trusted media asset metadata provider. At418, control circuitry353may generate a validated data vector for that accessed validated record. For example, control circuitry353may convert the data fields of the validated data record to binary and concatenate the resulting binary numbers. At420, control circuitry353may check if more validate records are available from the validated database. If so, process400may return to block416and process the next validated record. Otherwise, process400transmits the plurality of validated data vectors to block408to be used in the comparison operation.

At408, control circuitry353checks if a match was identified by comparisons in step422. If the denoised data vector matched a first matching vector (of the vectors generated at418), process400proceeds to426and430. Otherwise, at block424, control circuitry353may output an indication of a match failure. The indication of a match failure may be transmitted to the first database.

At426, control circuitry353may retrieve, from the validated database (e.g., from processing server308), a first validated record that was used to generate the first matching vector (e.g., at step418). At428, control circuitry353may output the retrieved first validated record. For example, control circuitry353may transmit the first validated record to the first database for storage in place of the corrupted record, thus improving the storage of the first database.

Once the DAE is trained at432, it can be used to denoise other corrupted records that may be received from the first database in block402in the future. For example, when a second corrupted record is received, steps404,406,408,422,426, and428may be repeated for the second corrupted record, except that at step406a DAE is used that was trained using the new example data pair generated at step430.

FIG. 5is a flowchart of an illustrative process for training a denoising autoencoder, in accordance with some embodiments of the disclosure. In some embodiments, each step of process500can be performed by computer device351(e.g., via control circuitry353) or any of the system components shown inFIG. 3. In another implementation, each step of process500can be performed by computer device processing server308(e.g., via control circuitry353of processing server308). Process500may also be used to train the DAE at steps412and432ofFIG. 4.

At502, control circuitry353may generate multiple copies of a DAE (e.g., DAE200ofFIG. 2). In some embodiments, at least some of the neuron connections of each of the copies may be randomized. For example, control circuitry353may generate neural net1at step504, neural net2at step506, and neural net N at step508. Any number of other neural nets may be generated.

At510, control circuitry353may evaluate performance of each of the neural nets1-N using one or more example data pairs. For example, to test a data pair {input data vector; first matching vector} from step430ofFIG. 4, control circuitry353may feed the input data vector through each of neural nets1-N and compare the outputs to the first matching vector. For example, control circuitry353may generate a performance score based on how well the outputs match the first matching vector (e.g., what percentage of the bits matched).

At512, control circuitry353may check performance of each of the neural nets1-N (e.g., based on the performance score). If the performance score is below the threshold for a certain neural net (e.g., for neural net1), that neural net is eliminated. For example, at step514, control circuitry353may calculate an average performance score for each of neural nets1-N and use it as the threshold. For example, control circuitry353may eliminate neural net1due to it having a performance score that is lower than the average performance score. At step518, control circuitry353may erase neural net1. If the performance is good, neural net may be kept at step516. For example, at steps520and522control circuitry353may keep neural nets2and N due to each of them having performance score that are higher than the average performance score.

At524, control circuitry353may generate a second plurality of copies of the neural network based on the copies of the neural network that have performed well. For example, control circuitry353may “breed” (e.g., combine) the neural nets that remained at step516together while introducing some new randomized changes. The second plurality of copies of the neural networks may be fed back to step510where process500may repeat to improve the performance of the plurality of neural nets1-N. In some embodiments, the process may be repeated any number of times. At526, control circuitry353selects the best-performing neural net of neural nets1-N. This selected neural net may then be used at DAE in step406ofFIG. 4.

FIG. 6is a flowchart of an illustrative process for outputting a retrieved validated record, in accordance with some embodiments of the disclosure. In some embodiments, each step of process600can be performed by computer device351(e.g., via control circuitry353) or any of the system components shown inFIG. 3. In another implementation, each step of process600can be performed by computer device processing server308(e.g., via control circuitry353of processing server308). Process600may be performed as part of step428.

Process600begins at602, where control circuitry353has retrieved the matching validated record and proceeds to output it using one or more of steps604and606-610.

At604, control circuitry353may display the validated record (e.g. on display362of device351). For example, a user may request a record from the first database (e.g., database102ofFIG. 1). Control circuitry353may determine that the record is corrupted or incomplete. In response, control circuitry353performs process400to acquire the validated record that matches the requested record. The validated record is then displayed instead of the corrupted record.

At606, control circuitry353may transmit the validated record to the first database. For example, control circuitry353may send the validated record over network304. At610, the corrupted record from the first database may be replaced with the validated record, thus improving the storage of the first database. For example, if the first database stores metadata of a media asset, subsequent access requests to the first database will result in much better quality of metadata for that media asset.

It should be noted that processes400-600or any step thereof could be performed on, or provided by, any of the devices shown inFIGS. 1-3. For example, the processes may be executed by control circuitry353(FIG. 3) as instructed by a DRA. In addition, one or more steps of a process may be omitted, modified, and/or incorporated into or combined with one or more steps of any other process or embodiment (e.g., steps from processes500and600may be combined with steps from process400). In addition, the steps and descriptions described in relation toFIGS. 4-6may be done in alternative orders or in parallel to further the purposes of this disclosure. For example, each of these steps may be performed in any order or in parallel or substantially simultaneously to reduce lag or increase the speed of the system or method.

A DRA may be a stand-alone application implemented on a media device or a server. The DRA may be implemented as software or a set of executable instructions. The instructions for performing any of the embodiments discussed herein of the DRA may be encoded on non-transitory computer readable media (e.g., a hard drive, random-access memory on a DRAM integrated circuit, read-only memory on a BLU-RAY disk, etc.) or transitory computer readable media (e.g., propagating signals carrying data and/or instructions). For example, inFIG. 3the instructions may be stored in storage358, and executed by control circuitry353of a computer device351.

The processes discussed above are intended to be illustrative and not limiting. More generally, the above disclosure is meant to be exemplary and not limiting. Only the claims that follow are meant to set bounds as to what the present invention includes. Furthermore, it should be noted that the features and limitations described in any one embodiment may be applied to any other embodiment herein, and flowcharts or examples relating to one embodiment may be combined with any other embodiment in a suitable manner, done in different orders, or done in parallel. In addition, the systems and methods described herein may be performed in real time. It should also be noted, the systems and/or methods described above may be applied to, or used in accordance with, other systems and/or methods.