Techniques herein train a multilayer perceptron, sparsify edges of a graph such as the perceptron, and store edges and vertices of the graph. Each edge has weight. A computer sparsifies perceptron edges. The computer performs a forward-backward pass on the perceptron to calculate a sparse Hessian matrix. Based on that Hessian, the computer performs quasi-Newton perceptron optimization. The computer repeats this until convergence. The computer stores edges in an array and vertices in another array. Each edge has weight and input and output indices. Each vertex has input and output indices. The computer inserts each edge into an input linked list based on its weight. Each link of the input linked list has the next input index of an edge. The computer inserts each edge into an output linked list based on its weight. Each link of the output linked list comprises the next output index of an edge.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method comprising repeatedly performing: a computer sparsifying edges of a neural network, wherein the neural network comprises edges and vertices, wherein each edge is associated with a weight, wherein the neural network is multilayer and feedforward; the computer performing a forward-backward pass on the neural network, wherein the forward-backward pass comprises calculating: an objective function value, a gradient of the objective function, and a sparse Hessian matrix; based on the sparse Hessian matrix, the computer performing a quasi-Newton optimization of the neural network. 2. The method of claim 1 wherein sparsifying comprises the computer prioritizing edges with weights near zero for removal. 3. The method of claim 1 wherein each edge originates at a vertex and terminates at a vertex, wherein sparsifying comprises the computer retaining, within a tolerance, a total input weight and a total output weight of each vertex, wherein the total input weight comprises a total weight of all edges that terminate at the each vertex, wherein the total output weight comprises a total weight of all edges that originate at the each vertex. 4. The method of claim 1 wherein sparsifying comprises the computer retaining an amount of input edges of each vertex within a range, and retaining an amount of output edges of each vertex within a range. 5. The method of claim 1 wherein sparsifying comprises: the computer storing an array of edges of the neural network, wherein each edge comprises a next input index and a next output index; the computer storing an array of vertices of the neural network, wherein each vertex comprises a first input index and a first output index; for each edge of the neural network, the computer inserting the each edge into an input linked list of edges at a list position based on the weight of the each edge, wherein each link of the input linked list comprises the next input index of an edge of the neural network; for each edge of the neural network, the computer inserting the each edge into an output linked list of edges at a list position based on the weight of the each edge, wherein each link of the output linked list comprises the next output index of an edge of the neural network. 6. The method of claim 5 wherein each edge of the neural network is associated with a plurality of edge metadata, wherein the edge metadata comprises a kept index and a removed index, wherein each link of a kept linked list comprises the kept index of an edge, wherein each link of a removed linked list comprises the removed index of an edge, wherein the method further comprises: for each edge of the neural network, if the weight of the each edge is between a low threshold and a high threshold, the computer performing: removing the each edge from the kept linked list, adding the each edge to the removed linked list. 7. The method of claim 6 wherein each vertex of the neural network is associated with a plurality of node metadata, wherein the node metadata comprises an original weight, a current weight, a current input count, and a current output count, wherein the original weight comprises a total weight of all edges that terminate at the each vertex, wherein the current weight comprises a total weight of all edges that terminate at the each vertex and are contained in the kept linked list, wherein the current input count comprises a count of all edges that terminate at the each vertex and are contained in the kept linked list, wherein the current input count comprises a count of all edges that originate at the each vertex and are contained in the kept linked list. 8. The method of claim 7 further comprising: the computer selecting a positive subset of edges of the neural network, wherein the value of the weight of each edge of the positive subset is positive; the computer selecting a negative subset of edges of the neural network, wherein the value of the weight of each edge of the negative subset is negative; the computer setting a positive weight threshold based on an average of weights of the positive subset; the computer setting a positive upper weight based on a largest weight of the positive subset; the computer setting a positive lower weight based on a smallest weight of the positive subset; the computer setting a negative weight threshold based on an average of weights of the negative subset; the computer setting a negative upper weight based on a largest weight of the negative subset; the computer setting a negative lower weight based on a smallest weight of the negative subset; for each vertex of the neural network, the computer performing: determining a signed input delta based on a difference of an expected input count less the current input count of the each vertex, determining an absolute input delta based on an absolute value of the signed input delta. 9. The method of claim 8 further comprising for each vertex of the neural network, the computer performing: if the signed input delta is negative, selecting a removable subset of edges from the kept linked list, wherein a size of the removable subset is based on the absolute input delta; if the signed input delta is negative, repeatedly performing: if current total input weight is lower than a target total input weight, removing a negative edge from the kept linked list and adding the negative edge to the removed linked list, wherein the negative edge has a negative weight, if current total input weight is higher than the target total input weight, removing a positive edge from the kept linked list and adding the positive edge to the removed linked list, wherein the positive edge has a positive weight. 10. The method of claim 9 further comprising for each vertex of the neural network, the computer performing: if the signed input delta is positive, selecting a restorable subset of edges from the removed linked list, wherein a size of the restorable subset is based on the absolute input delta; if the signed input delta is positive, repeatedly performing: if current total input weight is lower than the target total input weight, removing a positive edge from the removed linked list and adding the positive edge to the kept linked list, wherein the positive edge has a positive weight, if current total input weight is higher than the target total input weight, removing a negative edge from the removed linked list and adding the negative edge to the kept linked list, wherein the negative edge has a negative weight. 11. A method comprising: a computer storing an array of edges of a graph, wherein the graph is directed and acyclic, wherein each edge originates at a vertex and terminates at a vertex, wherein each edge is associated with a weight, wherein each edge comprises a next input index and a next output index; the computer storing an array of vertices of the graph, wherein each vertex comprises a first input index and a first output index; for each edge of the graph, the computer inserting the each edge into an input linked list of edges at a list position based on the weight of the each edge, wherein each link of the input linked list comprises the next input index of an edge of the graph; for each edge of the graph, the computer inserting the each edge into an output linked list of edges at a list position based on the weight of the each edge, wherein each link of the output linked list comprises the next output index of an edge of the graph. 12. The method of claim 11 wherein each edge of the graph is associated with a plurality of edge metadata, wherein the edge metadata comprises a kept index and a removed index, wherein each link of a kept linked list comprises the kept index of an edge, wherein each link of a removed linked list comprises the removed index of an edge, wherein the method further comprises: for each edge of the graph, if the weight of the each edge is between a low threshold and a high threshold, the computer performing: removing the each edge from the kept linked list, adding the each edge to the removed linked list. 13. The method of claim 12 wherein each vertex of the graph is associated with a plurality of node metadata, wherein the node metadata comprises an original weight, a current weight, a current input count, and a current output count, wherein the original weight comprises a total weight of all edges that terminate at the each vertex, wherein the current weight comprises a total weight of all edges that terminate at the each vertex and are contained in the kept linked list, wherein the current input count comprises a count of all edges that terminate at the each vertex and are contained in the kept linked list, wherein the current input count comprises a count of all edges that originate at the each vertex and are contained in the kept linked list. 14. The method of claim 13 further comprising: the computer selecting a positive subset of edges of the graph, wherein the value of the weight of each edge of the positive subset is positive; the computer selecting a negative subset of edges of the graph, wherein the value of the weight of each edge of the negative subset is negative; the computer setting a positive weight threshold based on an average of weights of the positive subset; the computer setting a positive upper weight based on a largest weight of the positive subset; the computer setting a positive lower weight based on a smallest weight of the positive subset; the computer setting a negative weight threshold based on an average of weights of the negative subset; the computer setting a negative upper weight based on a largest weight of the negative subset; the computer setting a negative lower weight based on a smallest weight of the negative subset; for each vertex of the graph, the computer performing: determining a signed input delta based on a difference of an expected input count less the current input count of the each vertex, determining an absolute input delta based on an absolute value of the signed input delta. 15. The method of claim 14 further comprising for each vertex of the graph, performing: if the signed input delta is negative, the computer selecting a removable subset of edges from the kept linked list, wherein a size of the removable subset is based on the absolute input delta; if the signed input delta is negative, the computer repeatedly performing: if current total input weight is lower than a target total input weight, removing a negative edge from the kept linked list and adding the negative edge to the removed linked list, wherein the negative edge has a negative weight, if current total input weight is higher than the target total input weight, removing a positive edge from the kept linked list and adding the positive edge to the removed linked list, wherein the positive edge has a positive weight. 16. The method of claim 15 further comprising for each vertex of the graph, the computer performing: if the signed input delta is positive, selecting a restorable subset of edges from the removed linked list, wherein a size of the restorable subset is based on the absolute input delta; if the signed input delta is positive, repeatedly performing: if current total input weight is lower than the target total input weight, removing a positive edge from the removed linked list and adding the positive edge to the kept linked list, wherein the positive edge has a positive weight, if current total input weight is higher than the target total input weight, removing a negative edge from the removed linked list and adding the negative edge to the kept linked list, wherein the negative edge has a negative weight. 17. A computer comprising: a memory; a processor connected to the memory and configured to repeatedly perform: sparsifying edges of a neural network, wherein the neural network comprises edges and vertices, wherein each edge is associated with a weight, wherein the neural network is multi-layer and feed-forward, wherein the neural network is stored in the memory; performing a forward-backward pass on the neural network, wherein the forward-backward pass comprises calculating: an objective function value, a gradient of the objective function, and a sparse Hessian matrix; based on the sparse Hessian matrix, performing a quasi-Newton optimization of the neural network. 18. The computer of claim 17 wherein sparsifying comprises: storing an array of edges of the neural network, wherein each edge originates at a vertex and terminates at a vertex, wherein each edge comprises a next input index and a next output index; storing an array of vertices of the neural network, wherein each vertex comprises a first input index and a first output index; for each edge of the neural network, inserting the each edge into an input linked list of edges at a list position based on the weight of the each edge, wherein each link of the input linked list comprises the next input index of an edge of the neural network; for each edge of the neural network, inserting the each edge into an output linked list of edges at a list position based on the weight of the each edge, wherein each link of the output linked list comprises the next output index of an edge of the neural network. 19. One or more non-transient computer readable media comprising instructions that when executed by one or more processors repeatedly cause: sparsifying edges of a neural network, wherein the neural network comprises edges and vertices, wherein each edge is associated with a weight, wherein the neural network is multi-layer and feed-forward; performing a forward-backward pass on the neural network, wherein the forward-backward pass comprises calculating: an objective function value, a gradient of the objective function, and a sparse Hessian matrix; based on the sparse Hessian matrix, performing a quasi-Newton optimization of the neural network. 20. The one or more non-transient computer readable media of claim 19 wherein sparsifying comprises: storing an array of edges of the neural network, wherein each edge originates at a vertex and terminates at a vertex, wherein each edge comprises a next input index and a next output index; storing an array of vertices of the neural network, wherein each vertex comprises a first input index and a first output index; for each edge of the neural network, inserting the each edge into an input linked list of edges at a list position based on the weight of the each edge, wherein each link of the input linked list comprises the next input index of an edge of the neural network; for each edge of the neural network, inserting the each edge into an output linked list of edges at a list position based on the weight of the each edge, wherein each link of the output linked list comprises the next output index of an edge of the neural network.