The present invention relates to the field of software security and, more particularly, to a novel system and method for automatically detecting malicious code and malicious open-source software (OSS) and closed source software (CSS) packages using Large Language Models (LLMs).
As the number of OSS packages and codebases multiply, not to mention software packages and codebases that are not open-source, detecting malicious packages and code has become increasingly challenging. Malicious packages and code, which introduce new patterns of attacks, consistently present significant risks to software systems. Traditional code scanning and analysis methods are ill-equipped to handle the magnitude and complexity of modern software projects, necessitating more efficient and scalable detection mechanisms. LLMs are able to recognize malicious code, with the ‘understanding’ that certain activities are indicative of malicious code, e.g., retrieving passwords and sending them over the internet; erasing code which is not part of the stated functions of the program, etc. One of the major challenges is that using LLMs to scan the vast amount of OSS on the internet is infeasible due to the immense computing power required to run these large neural networks repeatedly
According to the present invention there is provided a method for the efficient use of Large Language Models (LLMs) in malicious code detection, the method including: assessing code and assigning a probability level of being malicious; and running code assessed to be above a predetermined probability level through an LLM to determine if the code is malicious.
According to further features in preferred embodiments of the invention the method further includes filtering the code, prior to the assessing step, to determine whether the code is capable of performing one or more activities of a predetermined set of activities necessary for malicious activity.
According to still further features the filtering step employs a binary filter.
According to still further features the assessing step uses at least heuristics to determine the probability level of maliciousness.
According to still further features the assessing step employs a Code Embedding mechanism to determine the probability level of maliciousness, the code embedding mechanism including: generating a vector representation of the code being assessed, comparing and clustering of the vector representation with a database of malicious code embeddings, and assigning a probability value based on similarity to one or more of the malicious code embeddings; wherein the probability value is used in calculating the probability level during the assessing step.
According to still further features the database of malicious code embeddings includes a plurality attack embedding vectors each generated by a code embedding mechanism from a corresponding malicious code.
According to still further features the assessing step employs a prompt Embedding mechanism to determine the probability level of maliciousness, the prompt embedding mechanism including: generating a vector representation of the code being assessed, comparing and clustering of the vector representation with a database of malicious prompt embeddings, and assigning a probability value based on similarity to one or more of the malicious code embeddings; wherein the probability value is used in calculating the probability level during the assessing step.
According to still further features the database of malicious prompt embeddings includes a plurality prompt embedding vectors each generated by a descriptions processor from a corresponding free-text description of a malicious cyber-attack technique.
According to another embodiment, there is provided a method for efficient use of Large Language Models (LLMs) in malicious code detection, the method including: generating a Large Language Model (LLM) Code Pattern (LCP) detector, generating the LCP detector includes: generating a plurality of LLM embeddings from respective malicious code segments; enhancing each of the LLM embeddings with metadata to form LLM code Patterns (LCPs) of malicious code; indexing the LCPs in a vector database; embedding code to receive code embeddings; and comparing the code embeddings to the LCPs of malicious code in the vector database.
According to further features the method further includes clustering the code embeddings; and flagging abnormal patterns of clustering that are associated with malicious campaigns. According to further features an abnormal pattern of clustering includes multiple code embeddings of recently published code segments exhibit high similarity to each other.
According to still further features the method further includes generating new LCPs from embeddings of new malicious code segments; adding the new LCPs to the vector database. According to still further features the method further includes re-comparing the code embeddings to the vector database with the new LCPs.
Various embodiments are herein described, by way of example only, with reference to the accompanying drawings, wherein:
The principles and operation of a system and method for efficient malicious code detection using large language models according to the present invention may be better understood with reference to the drawings and the accompanying description.
The invention introduces a systematic and methodical approach for automatically detecting malicious code in codebases and malicious OSS packages using LLMs. The system integrates various mechanisms, such as intelligent code sampling, cascading filters based on Language Models (LMs), a malicious pattern recognition enhancer, an LLM-based detector, and self-improving mechanisms. This enables efficient detection of, and alerting to, potentially harmful packages and code. The methods discussed herein are relatively cheap, and their impact on the scanning accuracy of the OSS is minimal, enabling a balance between cost and efficiency.
Powerful LLMs can often detect various forms of malicious code. However, these models lack scalability and are expensive to run on large codebases. By employing cascading filters and smaller LMs, the efficient detection mechanism selects relevant files and code fragments that are likely to be malicious, and runs only these through the LLMs.
The decision as to which files and code fragments the instant efficient detection mechanism selects is grounded in the understanding of the fundamental capabilities necessary for an attack. Every form of attack necessitates certain capabilities to achieve its malicious objectives. These capabilities can range from the capacity to read data from global storage and/or write new files, to executing, or having the capacity to execute, external calls intended to dispatch sensitive information.
By pre-analyzing the code, the system can spot these attack capabilities and filter out code segments that are devoid of them, i.e., benign files/code segment. Since any type of attack hinges on these capabilities, the absence of these capabilities is a strong indicator that the code piece that is being inspected is incapable of carrying out a harmful activity. For instance, if a piece of code lacks the ability to read or write to other files, then its potential to steal data or dispatch passwords is negligible to non-existent. Therefore, by identifying and weeding out code that is not capable of these activities in the preprocessing stage, the system significantly streamlines the scanning load or burden on the LLM, thereby optimizing its efficiency and reliability.
For example, files that can publish to the web are files that are relevant to check, whereas files that cannot publish to the internet, are not likely to include malicious code because such files cannot send out passwords or other secrets, even if they find them. Similarly, if code cannot or does not read other files, then the likelihood that this code is malicious is much smaller than the likelihood of code that can or does read other files is malicious. This is because code that cannot read other files cannot steal data from them, for example, from a crypto wallet.
Therefore, files or code that have very limited capabilities are unlikely to be malicious and are consequently filtered out by a smaller LM.
Additionally, the system uses heuristics to determine which files/code are/is likely to be malicious. For example, the names of the files are analyzed. Files that are closer to the entry point of a system/root of a repository are more likely to be malicious. LLMs are able to point to files that have a high statistical probability of being malicious, based on the file names (e.g., a setup.exe, install.py and similar files are most likely to have malicious code). The LM or LLM selects a small number of files to run through the LLM which will scan for maliciousness.
After initial scanning and analysis, irrelevant files are filtered out, and the remaining files are ranked by their likelihood of being malicious. Files with a non-negligible likelihood are then sent to a large LLM for a final determination of maliciousness. This approach significantly improves the efficiency and feasibility of using LLMs for malicious code detection.
Referring now to the drawings,
Step 104 is an assessing or ranking step. In step 104, non-filtered files and code segments are ranked/assessed according to a likelihood of being malicious. Various techniques and methods for making such assessments or performing such ranking are discussed in further detail hereafter. In embodiments, more than one process or mechanism is used to assess or rank the code. Each process or mechanism outputs or assigns a probability value to the assessed code. That probability value is used in combination with other probability values received from other assessment tools (that are run concurrently or sequentially) to calculate/determine the probability level of the assess code. If the code's probability level is above a predetermined probability level, then the code is run through an LLM to determine if the code is malicious. In cases where only one process/mechanism is used during the assessment step, then the resulting probability value is equal to the probability level.
In step 106, non-filtered files and code segments, ranked above the predetermined threshold, are run through the LLM to better determine whether or not they are malicious. In this manner, the LLMs are more efficiently used on a much smaller set of inputs thanks to steps 102 and 104. The assessing/ranking tools may be used individually or in any combination in order to determine which files/code segments should be sent to the LLM for more intensive review and scrutiny.
Code embedding is a technique used to convert pieces of source code into fixed-size numerical vectors (embeddings) that capture the syntactic and semantic properties of the code and functional relationships between code snippets. Code embeddings are a transformative way to represent code snippets as dense vectors in a continuous space. Similar to word embeddings in natural language processing (NLP), code embeddings position similar code snippets close together in the vector space, allowing machines to understand and manipulate code more effectively. These embeddings are used as inputs to machine learning models for various tasks such as code search, code completion, bug detection, and automatic code generation.
The key concepts in code embedding are:
Innovatively, the present system utilizes smart embedding to represent code efficiently, with tuning that captures the essence and potential maliciousness of code. The vector representation enables efficient similarity comparison and clustering of code at varying levels of granularity.
For example, batches of similar code that are released together are suspicious as being part of an attack that includes close variations of malicious code in the hopes that some of the malicious packages will not be flagged.
Given a code base of malicious code snippets, the code embedding mechanism is applied on each code fragment. Then, given new code snippets for analysis, their code embedding is compared to the embeddings of the malicious snippets. Then, code snippets with high similarity to malicious embeddings are flagged as suspicious/malicious.
To provide a final decision regarding their maliciousness, the flagged code snippets are sent to the LLM-based detector. This way, the number of code snippets that are analyzed by the more expensive LLM-based detector is dramatically reduced.
In some cases, during the assessing step 104, the aforementioned code embedding mechanism 250 assigns a probability value that is used in combination with other probability values received from other assessment tools (that are run concurrently or sequentially with the present code embedding mechanism tool/process) to determine the probability level of the code snippet. If the code snippet probability level is above a predetermined probability level, then the code snippet is run through an LLM to determine if the code is malicious.
The detection of malicious code using the code embedding mechanism relies on maintaining a code base of malicious code snippets. The Prompt embedding is a complementary mechanism that enables the detection of malicious code without using any database of malicious code snippets.
This enables the system to not only identify whether a code snippet executes a specific attack, but also to sweep entire code repositories for potential threats described in natural language.
Like the Code embedding mechanism, the system utilizes smart embedding to represent cyberattacks' descriptions efficiently. Cyber-attack descriptions 312 are fed into a Descriptions processor 314 to generate corresponding prompt embedding vectors 316. The prompt embedding vectors 316 are stored in a prompt embedding database 320. The vector representation enables efficient similarity comparison between cyberattacks' descriptions and code fragments.
Given a database 320 of free-text descriptions of cyber-attacks, the Prompt embedding mechanism is applied on each free-text description. Then, given new code snippets 352 for analysis, code embeddings 354 are generated. The embedding vectors 356 are compared, using an embedding similarity mechanism 358, to the embeddings of the cyberattacks' descriptions in database 320. At decision step 360, the mechanism needs to decide if there is a high similarity to any malicious code description. If it is determined that there is no or insufficient similarity to an existing malicious embedding, then code snippet is determined to be benign 362. Code snippets with high similarity to malicious descriptions are flagged as suspicious/malicious at 364.
Similar to the Code embedding mechanism, the flagged code snippets are sent to the LLM-based detector 366, to provide a final decision regarding their maliciousness. In this manner, the system dramatically reduces the number of code snippets that are analyzed by the more expensive LLM-based detector.
In summary, the system employs a prompt embedding mechanism to assess whether a new code snippet is similar to malicious code by converting the code snippet into embedding and comparing the embedding to embeddings of [free text] descriptions of cyber-attacks/cyber-attack techniques.
In some cases, during the assessing step 104, the aforementioned prompt embedding mechanism 350 assigns a probability value that is used in combination with other probability values received from other assessment tools (that are run concurrently or sequentially with the present code embedding mechanism tool/process) to determine the probability level of the code snippet. If the code snippet probability level is above a predetermined probability level, then the code snippet is run through an LLM to determine if the code is malicious. Other tools/processes/mechanisms discussed herein can be used alone or in combination to determine the probability level of the code.
To demonstrate the power of a search engine according to the present system and process, the system analyzed thousands of PyPi packages, using the aforementioned Prompt Embedding mechanism, and was able to pinpoint packages that contained fragments indicative of a reverse shell attack. Several packages, including proclean and sysversion, bore striking similarities to reverse shell implementations. The ability to detect those similarities without a reference database affirms the practical value of the present method in detecting and mitigating such threats effectively.
Instead of searching for exact code matches, the Prompt Embedding process interprets the intent and structure behind the natural language description to find code that behaves in the same way as known malicious code.
It has been mentioned previously that malicious code can be transformed into code embeddings. This process can be done, and is done, by LLMs such as ChatGPT™. Using an LLM to generate a code embedding is not as resource heavy as using the LLM to check if the code is malicious. Therefore, code embeddings (discussed heretofore and hereafter) may be generated by LLMs.
The Malicious Pattern Recognizer mechanism and process learns malicious code patterns using LLM embeddings (of malicious code), which, along with metadata, are used to form LLM code patterns (LCPs).
LCPs are simplified representations of code in vector format. The vector captures the essence of the code, allowing detectors to draw similarities between different pieces of code more efficiently. LCPs enable making malicious software detection more efficient and scalable.
To establish similarities and cluster code segments, the LCP detector incorporates the following:
New code can be embedded and compared to malicious LCPs, allowing for the identification and classification of the attack pattern. So, the system does not need to run every piece of code through an LLM but rather use pattern recognition to see if this code is similar to other known code in the repository. If the other known code is malicious code, then this similar code needs to be looked at more closely (i.e., run through an LLM) to determine whether it too is malicious.
The Malicious Pattern Recognition Enhancer generalizes past detections using LLMs to expand detection coverage. Detected [malicious] code vectors express variants of existing attack patterns, contributing to a unified and robust LCP while enabling the mechanism to learn nuances of attacks.
Since the LCP-based detector improves as it is introduced to new LCPs, there is incorporated within the system an enhancer that uses an LLM that analyzes and understands malicious packages and code snippets, extracts LCPs, and feeds them to a pattern enhancer to create an improved detector.
An enhancer can contribute directly to the detection of malicious code, while also being able to learn the evolution of attacks, by having each generation of the pattern recognizer adapt to previous versions of the attack.
Combining LLMs, proprietary code feature extraction, dimensionality reduction, and probabilistic sampling, the scalable detection mechanism identifies similarities and clusters packages. The analysis of code undergoes scanning and preliminary automatic analysis to determine the likelihood of malicious content.
If the code is capable of malicious activity—this is determined by a less-strong LM—then it may be passed to an LLM for a more labor intensive (i.e., resource intensive)/expensive scan. Monitoring vast amounts of code and packages is enabled by combining these elements, providing scalability for modern codebases or package manager repositories.
By keeping an index of package embeddings, including LCPs, any new detection can be compared against the index, leading to the discovery of malicious code in already published packages.
In this case the system also detects packages that were previously considered as benign. The diagram of
As the mechanism is autonomous and does not require human intervention in most cases, immediate responses can be generated when a malicious package or committed code is published. This low-latency alert system reduces the time malicious code can operate, thus minimizing developers' exposure to such code.
The invention also allows for fine-tuning the patterns detector to declare code as suspicious when it closely matches an LCP without an exact match, providing a safety spectrum for published packages and facilitating customizable alerts based on security requirements.
The pattern recognition enhancer builds a detector that flags malicious packages. For example, the following packages were known to be malicious:
Yet, a package named, web3_checksum, with a similar attack method, existed for a long time in the repository, and was discovered by the pattern-based detector, following an enhanced version/update derived from the packages above.
The direct and efficient LLM-based detector found previously unknown malicious packages using smart sampling and cascading filters. Smart sampling is asking a less-powerful LM what the likelihood a given code package is malicious. If the likelihood is high, then the code is passed on for scanning by a more powerful LLM. Another example of smart sampling is giving the list of names of files and asking which are the most likely to be malicious (see the visualization depicted in
Cascading filters may be the binary question asked to the LM: is this file capable of being malicious? The answers are yes or no, without additional information. On top of that, LMs and similar machine-learning models can also predict the probability of maliciousness, and thereby derive better control of the files passed to the LLM. Alternatively, the LM can be asked whether the code is capable of doing malicious tasks, e.g., can it read other files, can it publish to the internet etc. If the answer is no, then we know that this code could not be part of an attack which stole passwords, for example.
The smart sampling and cascading filters are used to reduce the number of files that are eventually run through the LLM. If the filters work correctly, then the LLM is used most efficiently. For example, the following malicious package, menuloading-pygame, was detected as soon as it was published. The algorithm required scanning only 2 files to detect the malicious code. This approach drastically reduced the number of files required for the analysis.
Machine Learning and Artificial Intelligence cover a vast range of mechanisms, methods, and techniques. It is made clear that any type of machine learning model may be used. The term “machine learning (ML)” and grammatical variations thereof is intended to convey method of machine learning known in the art (e.g., artificial intelligence (AI), deep learning, neural networks, etc.) and/or combinations thereof. One example of a machine learning model is a neural network.
The linkages in a neural network are generally pre-defined. Over some number of training examples, the strength of different relationships emerges by being reflected in the weights of each edge of the neural network as the weights of the edges are adjusted with each training example. In a neural network, an edge exists between two nodes and then over time it will develop a large or small weight reflecting a strong or weak relationship between the variables represented by the two nodes that the edge connects.
Another example embodiment of the machine learning model is a Convolution Neural Networks (CNN). The instant example is not intended to limit the method or system in any way, rather it is merely intended to portray one way of implementing the method and/or system.
Depending on what the ML model is trained for, the dataset is used to refine the model's ability to make the best decisions. It is true that market valuation and financial investment is a complex science-slash-art. However, training a model on certain aspects of the market can prove to be very successful. Also, following successful investors and investments, investment strategies that have proven themselves over time, and other proven wisdom can arm the model with many reliable tools for creating/successfully running a multi-generational savings fund.
For example, US20190378050A1 to Edkin et al. discloses a non-transitory computer readable medium storing computer-executable instructions that, when executed by a graphics processing unit, cause an ensemble of machine learning sub-engines to: train a machine learning model of the ensemble of machine learning sub-engines using a corpus, where the corpus includes a training data and a test data; classify a plurality of nodes in a graph, which includes nodes and edges and is stored in computer memory, based on the machine learning model, by setting a classification attribute of a first node and a second node of the plurality of nodes to one of a plurality of classifications; and insert an edge in the graph between the first node and the second node in response to the machine learning model detecting a pattern, where the first node corresponds to a first entity type and the second node does not correspond to a second entity type. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods. US20190378050A1 is incorporated by reference as if fully set forth herein.
Implementation of the method and/or system of embodiments of the invention can involve performing or completing selected tasks manually, automatically, or a combination thereof. Moreover, according to actual instrumentation and equipment of embodiments of the method and/or system of the invention, several selected tasks could be implemented by hardware, by software or by firmware or by a combination thereof using an operating system.
For example, hardware for performing selected tasks according to embodiments of the invention could be implemented as a chip or a circuit. As software, selected tasks according to embodiments of the invention could be implemented as a plurality of software instructions being executed by a computer using any suitable operating system. In an exemplary embodiment of the invention, one or more tasks according to exemplary embodiments of method and/or system as described herein are performed by a data processor, such as a computing platform for executing a plurality of instructions. Optionally, the data processor includes a volatile memory for storing instructions and/or data and/or a non-volatile storage, for example, non-transitory storage media such as a magnetic hard-disk and/or removable media, for storing instructions and/or data. Optionally, a network connection is provided as well. A display and/or a user input device such as a keyboard or mouse are optionally provided as well.
For example, any combination of one or more non-transitory computer readable (storage) medium(s) may be utilized in accordance with the above-listed embodiments of the present invention. A non-transitory computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable non-transitory storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
As will be understood with reference to the paragraphs and the referenced drawings, provided above, various embodiments of computer-implemented methods are provided herein, some of which can be performed by various embodiments of apparatuses and systems described herein and some of which can be performed according to instructions stored in non-transitory computer-readable storage media described herein. Still, some embodiments of computer-implemented methods provided herein can be performed by other apparatuses or systems and can be performed according to instructions stored in computer-readable storage media other than that described herein, as will become apparent to those having skill in the art with reference to the embodiments described herein. Any reference to systems and computer-readable storage media with respect to the following computer-implemented methods is provided for explanatory purposes and is not intended to limit any of such systems and any of such non-transitory computer-readable storage media with regard to embodiments of computer-implemented methods described above. Likewise, any reference to the following computer-implemented methods with respect to systems and computer-readable storage media is provided for explanatory purposes and is not intended to limit any of such computer-implemented methods disclosed herein.
The flowcharts and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
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.
As used herein, the singular form “a”, “an” and “the” include plural references unless the context clearly dictates otherwise.
The word “exemplary” is used herein to mean “serving as an example, instance or illustration”. Any embodiment described as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments and/or to exclude the incorporation of features from other embodiments.
It is appreciated that certain features of the invention, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable sub-combination or as suitable in any other described embodiment of the invention. Certain features described in the context of various embodiments are not to be considered essential features of those embodiments, unless the embodiment is inoperative without those elements.
The above-described processes including portions thereof can be performed by software, hardware and combinations thereof. These processes and portions thereof can be performed by computers, computer-type devices, workstations, processors, micro-processors, other electronic searching tools and memory and other non-transitory storage-type devices associated therewith. The processes and portions thereof can also be embodied in programmable non-transitory storage media, for example, compact discs (CDs) or other discs including magnetic, optical, etc., readable by a machine or the like, or other computer usable storage media, including magnetic, optical, or semiconductor storage, or other source of electronic signals.
The processes (methods) and systems, including components thereof, herein have been described with exemplary reference to specific hardware and software. The processes (methods) have been described as exemplary, whereby specific steps and their order can be omitted and/or changed by persons of ordinary skill in the art to reduce these embodiments to practice without undue experimentation. The processes (methods) and systems have been described in a manner sufficient to enable persons of ordinary skill in the art to readily adapt other hardware and software as may be needed to reduce any of the embodiments to practice without undue experimentation and using conventional techniques.
Machine learning (ML) is a branch of artificial intelligence (AI) that leverages data to improve computer performance by giving machines the ability to “learn”.
Machine learning algorithms build a model based on sample data, known as training data, in order to make predictions or decisions without being explicitly programmed to do so. Machine learning algorithms are used in a wide variety of applications, such as in medicine, email filtering, speech recognition, agriculture, and computer vision, where it is difficult or unfeasible to develop conventional algorithms to perform the needed tasks. As used herein, the ML algorithms are employed, for example, for creating or assisting in the creation of contracts. ML algorithms are also employed, for example, as part of the Evidence Analysis Module or subsystem that analyzes the evidence that is provided as proof that a milestone has been met or a proof that a milestone has not been met, or not been met to a satisfactory degree. For example, ML algorithms for computer vision can be employed to analyze uploaded images that are intended to show before and after images of a task. The models may be trained on images of products so as to be able to recognize given features in an image.
A subset of machine learning is closely related to computational statistics, which focuses on making predictions using computers, but not all machine learning is statistical learning. The study of mathematical optimization delivers methods, theory and application domains to the field of machine learning. Data mining is a related field of study, focusing on exploratory data analysis through unsupervised learning.
Some implementations of machine learning use data and artificial neural networks in a way that mimics the working of a biological brain.
While the invention has been described with respect to a limited number of embodiments, it will be appreciated that many variations, modifications and other applications of the invention may be made. Therefore, the claimed invention as recited in the claims that follow is not limited to the embodiments described herein.
This patent application claims priority from, and the benefit of, U.S. Provisional Patent Application No. 63/538,319, filed Sep. 14, 2023, which is incorporated in its entirety as if fully set forth herein.
| Number | Date | Country | |
|---|---|---|---|
| 63538319 | Sep 2023 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 18885799 | Sep 2024 | US |
| Child | 19071898 | US |