Exemplary embodiments relate to techniques for integrating common sense into a machine learning (ML) system. In contrast to existing machine learning algorithms that search for statistical correlations between concepts, exemplary embodiments attempt to learn the semantic relationships or causality between the concepts. This may be accomplished by training an algorithm or data structure to learn similar vector representations of words present in the same context (e.g., that are present together in the same sentence). The resulting AI/ML, structure may be used to guide the generation of a causal graph having predictive capabilities. This causal graph may represent semantic relationships and/or causation between concepts, and hence may be employed to introduce a degree of common sense in the machine learning system.
|
8. A computer-implemented method comprising:
retrieving textual data comprising human-generated information containing a plurality of concepts;
building a learned embedding from the retrieved textual data with an unsupervised machine learning process, the learned embedding comprising a semantic space for representing relationships between the concepts with vectors in the semantic space, the building comprising:
generating a hypothesis comprising an observation concept and one or more cause concepts, the hypothesis representing a prediction that the observation concept is dependent upon the cause concepts, wherein the observation concept and each of the one or more cause concepts correspond to different portions of the textual data,
defining a probability distribution describing a likelihood of observing the observation concept given the one or more cause concepts, and
assigning a coefficient to each of the cause concepts based on an amount of contribution of the cause concept to the observation concept, wherein the coefficients for the cause concepts comprise a vector in the semantic space;
correlating observation concepts with cause concepts based on the learned embedding, the correlating comprising selecting a predetermined number of strongest relationships based on the coefficients assigned to the cause concepts;
generating a causal graph based on the correlated concepts, the causal graph comprising a plurality of nodes representing concepts, each pair of nodes connected by zero or one edges, where pairs of correlated nodes are connected with edges; and
selecting words in a message generated in response to user input with the causal graph based, at least in part, on a prediction, given an observed concept, as to which cause concepts caused the observed concept.
1. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to:
retrieve textual data comprising human-generated information containing a plurality of concepts;
build a learned embedding from the retrieved textual data with an unsupervised machine learning process, the learned embedding comprising a semantic space for representing relationships between the concepts with vectors in the semantic space, the building comprising:
generating a hypothesis comprising an observation concept and one or more cause concepts, the hypothesis representing a prediction that the observation concept is dependent upon the cause concepts, wherein the observation concept and each of the one or more cause concepts correspond to different portions of the textual data,
defining a probability distribution describing a likelihood of observing the observation concept given the one or more cause concepts, and
assigning a coefficient to each of the cause concepts based on an amount of contribution of the cause concept to the observation concept, wherein the coefficients for the cause concepts comprise a vector in the semantic space;
correlate observation concepts with cause concepts based on the learned embedding, the correlating comprising selecting a predetermined number of strongest relationships based on the coefficients assigned to the cause concepts;
generate a causal graph based on the correlated concepts, the causal graph comprising a plurality of nodes representing concepts, each pair of nodes connected by zero or one edges, where pairs of correlated nodes are connected with edges; and
select words in a message generated in response to user input with the causal graph based, at least in part, on a prediction, given an observed concept, as to which cause concepts caused the observed concept.
15. An apparatus comprising:
a network interface configured to retrieve data comprising human-generated information containing a plurality of concepts;
a hardware processor circuit; and
a memory comprising instructions that when executed by the hardware processor circuit cause the hardware processor circuit to:
retrieve textual data comprising human-generated information containing a plurality of concepts;
build a learned embedding from the retrieved textual data with an unsupervised machine learning process, the learned embedding comprising a semantic space for representing relationships between the concepts with vectors in the semantic space, the building comprising:
generating a hypothesis comprising an observation concept and one or more cause concepts, the hypothesis representing a prediction that the observation concept is dependent upon the cause concepts, wherein the observation concept and each of the one or more cause concepts correspond to different portions of the textual data,
defining a probability distribution describing a likelihood of observing the observation concept given the one or more cause concepts, and
assigning a coefficient to each of the cause concepts based on an amount of contribution of the cause concept to the observation concept, wherein the coefficients for the cause concepts comprise a vector in the semantic space;
correlate observation concepts with cause concepts based on the learned embedding, the correlating comprising selecting a predetermined number of strongest relationships based on the coefficients assigned to the cause concepts;
generate a causal graph based on the correlated concepts, the causal graph comprising a plurality of nodes representing concepts, each pair of nodes connected by zero or one edges, where pairs of correlated nodes are connected with edges; and
select words in a message generated in response to user input with the causal graph based, at least in part, on a prediction, given an observed concept, as to which cause concepts caused the observed concept.
2. The medium of
3. The medium of
4. The medium of
5. The medium of
6. The medium of
7. The medium of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. The method of
16. The apparatus of
17. The apparatus of
18. The apparatus of
19. The apparatus of
20. The apparatus of
|
Machine learning algorithms may interact with humans, such as when computer-operated bots conduct conversations with users. Although great strides have been made recently in training these algorithms to sound more natural, they still lack the ability to integrate context and common-sense relationships.
Exemplary embodiments provide methods, mediums, and systems for learning and applying causation.
According to an embodiment, data may be retrieved that includes human-generated information containing a plurality of concepts. The data may include, for example, one or more of videos, web pages, encyclopedias, or news stories. A learned embedding may be built from the retrieved data, where the learned embedding represents relationships between the concepts.
Building the learned embedding may involve generating a hypothesis including an observation concept and one or more cause concepts. The hypothesis may represent a prediction that the observation concept is dependent upon the cause concepts. A probability distribution may be defined, the probability distribution describing a likelihood of observing the observation concept given the plurality of cause concepts. A coefficient may be assigned to each of the cause concepts, where the coefficients are based on an amount of contribution of the cause concept to the observation concept. The process of generating the learned embedding may be performed using an unsupervised learning process, and/or may involve applying an artificial neural network (ANN).
Observation concepts may be programmatically correlated with cause concepts based on the learned embedding. The correlating may involve selecting a predetermined number of strongest relationships based on the coefficients assigned to the cause concepts. Correlating the concepts may involve determining a strength of the correlation, where the strength is represented as a probability that the observation concept is dependent upon the cause concept. The thus-correlated concepts may be used to generate a causal graph. The causal graph may include a plurality of nodes representing concepts, each pair of nodes connected by zero or one edges, where pairs of correlated nodes are connected with edges. The edges of the causal graph may be assigned weights based on the calculated strength of the correlation between the connected nodes.
The causal graph may then be used to perform at least one of guiding a conversation with a user or making a prediction, given an observed concept, as to which cause concepts caused the observed concept.
According to a further embodiment, the causal graph (or another type of data structure) need not be generated and used by the same entity or at the same time. In such an embodiment, a causal inference structure may simply be accessed, where the causal inference structure includes connections between semantically-related words. In one example, words may be considered semantically related when (and only when) the words appear together in more than a predetermined number of instances among the input data. In another example, the words may appear together in fewer than the predetermined number of instances, but may occur in the presence of certain context conditions that strongly suggest that the words are related. The causal inference structure may be built by constructing a learned semantic space that penalizes the learning of connections between pairs of words that are not strongly correlated in an input data set.
The casual inference structure may be built using particular types of input data. For example, the input data set may be user-specific, so that the causal inference structure is personalized to a given user. In another example, the input data set may be specific to a particular user demographic; in this way, the system can use the causal inference structure to determine whether the user is associated with the demographic. In yet another example, the input data may be culture-specific, so that the system can use the causal inference structure to determine whether the user is associated with the culture. In this way, a tool such as a chatbot can be better customized or personalized to people, demographic groups, and cultures.
A first word that is present in the causal inference structure may be received for analysis. A system may output a prediction of one or more causal words that are predicted to contribute to a context associated with the first word.
This prediction may be used to, for example, guide a conversation with a human user. For example, the prediction may be used to select semantically appropriate words in the conversation, and/or may be used to take actions so as to reduce a length of the conversation.
In a further embodiment, structural learning logic may be employed to access data including descriptions of various related ideas. The data may include human-generated information pertaining to the ideas. The data may include audio data, and/or may be particular to a given user.
Relationships among the ideas may be established by determining that two ideas are correlated. Two ideas may be considered correlated, for example, when the two ideas occur together in the presence or absence of particular context conditions. In one example, two ideas may be considered correlated when the two ideas occur together only a limited number of times (e.g., less than a predetermined number of times), but occur together in the presence of the context condition.
A correlation value may be assigned to the correlated ideas, and correlated ideas having the highest correlation values may be selected and identified as being correlated. The relationships may be established using a representation of an artificial neural network configured to be employed to establish the relationships between the ideas.
The established relationships may be used to generate a representation of a graph. The selected correlated ideas may be connected in the representation of the graph.
The exemplary embodiments will next be described in detail with reference to the attached drawings.
Consider, for example, an artificially-intelligent bot for a banking website that provides customer service to a user. When a user asks for their account balance, the bot could respond in a number of different ways. For instance, if the user has a credit account, checking account, savings account, a mortgage account, and a brokerage account, the bot could break down the user's balance on an account-by-account basis, and could provide even further information (e.g., how much of the brokerage account is dedicated to cash versus stocks and bonds, the value of pending transactions in the credit account, if an automatic payment is scheduled for the mortgage account in the near future, etc.). This information may be of use to a given user, and the user may have even requested the information in the past. However, if it is currently late at night and the user is tired, the user likely wants to receive only the most relevant information (e.g., the top-line numbers for the requested accounts, or only a subset of the accounts that are deemed to be most relevant). Current systems do not have a way to integrate contextual data into a common-sense approach like this one, because they do not have a good understanding of the relationships between the relevant concepts (in this case, the user's current mood and the duration of the dialog).
Some machine learning algorithms have attempted to learn these relationships. However, this learning has generally been based on statistical correlations and has not generally yielded good results. This is because statistical relationships tend to measure correlations between different variables, but not their semantic relationship. Statistical correlations do not necessarily arise because of a true relationship between two concepts (consider the maxim that “correlation does not imply causation”), and so purely statistical approaches can assign a relationship when none exists (or fail to recognize a relationship that does exist).
In some cases, it may be possible to re-introduce an element of common sense into such a machine learning algorithm. Typically, this is done by preparing a set of rules that specifically include or exclude certain conditions (e.g., “if the current time is between 10 PM and 6 AM, use a short dialog” or “exclude race, age, national origin, and gender from decision-making in a loan application”). However, these rules must generally be generated manually and therefore require human supervision and a great deal of effort and trial-and-error. It is, unfortunately, difficult to algorithmically establish these rules, however, since an algorithm based on statistical analysis may learn spurious correlations and therefore introduce algorithmic bias.
In order to address these problems, exemplary embodiments described herein provide techniques for integrating common sense into a machine learning (ML) system. In contrast to existing machine learning algorithms that search for statistical correlations between concepts, exemplary embodiments attempt to learn the semantic relationships or causality between the concepts.
This may be accomplished by training an algorithm or data structure to learn similar vector representations of words present in the same context (e.g., that are present together in the same sentence). One example of such a structure is an artificial neural network. The resulting structure may be used to guide the generation of a causal graph having predictive capabilities.
This causal graph may represent semantic relationships and/or causation between concepts, and hence may be employed to introduce a degree of common sense in the machine learning system. This may be achieved by using the causal relationships, rather than simply statistically-correlated relationships, in applications such as computer-based language processing, machine-learning guided decision-making, and others.
One insight that makes this possible is that a wide array of input data has been generated by humans and is readily available; for example, online encyclopedias, news stories, articles, etc. can be easily farmed for human-generated data. Because humans (theoretically) generate language using a degree of common sense (employing semantically-related words together, and avoiding the use of words that do not make sense together in a given context), this information can be processed to generate the AI/ML structure.
Once the AI/ML structure is generated, it can be used to guide the generation of the causal graph. For example, given that the semantic relationships have been learned and are now encoded in the AI/ML, structure, these relationships can be used to connect different concepts together in a graph, and give weight to the connections based on the determined strength of the relationships.
Using the graph, then, one can define groups of closely-related concepts and the relationships between the concepts. This information can help to guide a variety of different services based on semantic causality, rather than statistical correlation. Because of this, conversations may be more natural, accurate, and reflect a degree of human common sense.
There are several design goals that would be desirable to achieve in any suitable solution. First, the solution should provide exceptions to frequent patterns. In other words, the solution should discover and assign higher probabilities to infrequent patterns in user data when relevant context conditions are present. More traditional statistical approaches only optimize for frequent patterns, and therefore miss in-context correlations that do not occur very often.
Second, the solution should be personalizable. Discovered relationships should be tailored to each user of the solution, because each user's own behavior and routine is personal.
Third, the solution should model ambiguity given real-world semantics. The system should discover relationships based, not only on an accurate regression of variables, but also on an evaluation of how semantically valid these relationships are.
The embodiments described herein achieve one or more of these goals, as well as others described below.
As an aid to understanding, a series of examples will first be presented before detailed descriptions of the underlying implementations are described. It is noted that these examples are intended to be illustrative only and that the present invention is not limited to the embodiments shown.
Reference is now made to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. However, the novel embodiments can be practiced without these specific details. In other instances, well known structures and devices are shown in block diagram form in order to facilitate a description thereof. The intention is to cover all modifications, equivalents, and alternatives consistent with the claimed subject matter.
In the Figures and the accompanying description, the designations “a” and “b” and “c” (and similar designators) are intended to be variables representing any positive integer. Thus, for example, if an implementation sets a value for a=5, then a complete set of components 122 illustrated as components 122-1 through 122-a may include components 122-1, 122-2, 122-3, 122-4, and 122-5. The embodiments are not limited in this context.
The type of graph shown in
In exemplary embodiments of the present invention, edges connect nodes to show a causal and/or semantic correspondence, and the weight of the edge reflects the strength of the correspondence.
To better illustrate this point, consider the examples in
In exemplary embodiments, a structural learning process may generate a hypothesis that aims to explain the observation μ given a set of causes r. The strength of the relationship between the causes r and the observation μ may be represented as a probability distribution denominated as a likelihood: P(observation|causes).
This probability distribution can be computed using a representation as depicted in
Once all the conditional dependencies are computed, the top K relationships may be selected (where K is a predetermined number that may be selected, e.g., based on the application or the number of relationships desired to be defined). These top K relationships may survive to generate a graph of strong dependencies, which is able to implement predictions. A prediction may refer to the ability to infer causes from a given observation in an inference process 108, as shown in
In order to draw these inferences, a machine learning/artificial intelligence structure such as an artificial neural network (ANN) may be trained.
The learning process is based on the hypothesis that two concepts that tend to occur together in the same sentence (e.g., photosynthesis and sunlight) tend to be highly correlated [Mikolov 2014]. The artificial neural network maps words to latent concepts by learning similar vector representations for the words. These relationships are encoded in hidden layer 308 of the neural network. This embedding is a learned semantic space for leveraging relationships between concepts, and will be used as prior knowledge over relationships when constructing a causal graph to penalize the learning of relationships that lack common sense during the structural learning process. An example of a suitable technique for mapping words to concepts is the unsupervised Word2Vec method.
In the example of
The exemplary embodiments may leverage the ANN generated in
The result is a semantic causal graph that uses unsupervised data sources and training methods to provide more reasonable causal predictions and explanations. The graph may be used in a variety of contexts, such as a conversational intelligence (e.g., a chatbot) or to predict the cause(s) of a given observation.
It is noted that embedding spaces can be constructed with inputs other than text, and exemplary embodiments may also be directed to such applications. For instance, the above-described methodology could be applied to modalities such as audio (e.g., voice-to-text data).
The above-described process is but one exemplary embodiment, with particular steps performed in a particular order. One of ordinary skill in the art will recognize that more, fewer, or different steps may be performed, and the steps may be performed in a different order, while remaining within the scope of the invention.
At block 502, the system may retrieve data that includes human-generated information containing a plurality of concepts. The data may include, for example, one or more of videos, web pages, encyclopedias, or news stories. The data may be unlabeled data suitable for use in an unsupervised learning process (although, if labeled data is available, it may be used as an alternative or in addition to the unlabeled data).
At block 504, a learned embedding may be built from the retrieved data. The learned embedding may represent relationships between the concepts. This procedure is similar to the one outlined above in connection with
The process of building the learned embedding may involve, at block 506, generating a hypothesis including an observation concept and one or more cause concepts. The hypothesis may represent a prediction that the observation concept is dependent upon the cause concepts.
At block 508, the process of building the learned embedding may further involve defining a probability distribution. The probability distribution may describe a likelihood of observing the observation concept given the plurality of cause concepts.
At block 510, the process of building the learned embedding may further involve assigning coefficients to the cause concepts. The coefficients may be based on an amount of contribution of the cause concept to the observation concept. The process of generating the learned embedding may be performed using an unsupervised learning process, and/or may involve applying an artificial neural network (ANN).
At block 512, observation concepts may be programmatically correlated with cause concepts based on the learned embedding. The correlating may involve selecting a predetermined number of strongest relationships based on the coefficients assigned to the cause concepts. Correlating the concepts may involve determining a strength of the correlation, where the strength is represented as a probability that the observation concept is dependent upon the cause concept.
At block 514, the thus-correlated concepts may be used to generate a causal graph, similar to those shown in
The causal graph may then be applied, in block 516 to perform one of a number of possible tasks. For instance, at block 518, the causal graph may be applied to guide a conversation with a human user. One example of such an application would be using the causal graph with a communications bot (or other similar technology) in order to guide choices that the bot makes, such as choices of vocabulary (e.g., using words that semantically make sense together as defined by their closeness in the causal graph) or taking steps to shorten or otherwise limit the conversation when certain conditions apply (e.g., the user's word choice and surrounding context suggest that the user is tired.
Another example, as set forth in block 520, is to use the causality graph to perform causality prediction. Given an observation embodying one concept, the causality graph may be used to make inferences, as shown in
It is not necessary that the graph be generated and applied in a single process; an already-generated graph may be applied in a number of ways, and so the entity that generates the graph may be separated from the entity that uses it. This might allow, for example, for one entity with access to large amounts of data to construct highly accurate and/or customized causal graphs, and to offer the use of the graphs as a service to third parties that use the graphs to guide actions or provide services based on the graph. For example,
At block 542, the system may access a causal inference structure. The causal inference structure may include a number of words and connections between those words that are semantically related. Words may be considered semantically related when (and only when) the words appear together in more than a predetermined number of instances among the input data. In another example, the words may appear together in fewer than the predetermined number of instances, but may occur in the presence of certain context conditions that strongly suggest that the words are related. The structure may be built by constructing a learned semantic space that penalizes the learning of connections between pairs of words that are not strongly correlated in an input data set, as shown in
The casual inference structure may be built using particular types of input data. For example, the input data set may be user-specific, so that the causal inference structure is personalized to a given user. In another example, the input data set may be specific to a particular user demographic; in this way, the system can use the causal inference structure to determine whether the user is associated with the demographic. In yet another example, the input data may be culture-specific, so that the system can use the causal inference structure to determine whether the user is associated with the culture. In this way, a tool such as a chatbot can be better customized or personalized to people, demographic groups, and cultures.
At block 544, the system may receive, as an input, a first word that is present in the causal inference structure. At block 546, the system may use the causal inference structure to output a prediction of one or more causal words that are predicted to contribute to a context associated with the first word. These causal words may be identified by following the directed edges in the causal inference structure in the backward direction (from the input first word to related words in the structure).
At block 548 This prediction may be used to, for example, guide a conversation with a human user. For example, the prediction may be used to select semantically appropriate words in the conversation (block 550), and/or may be used to take actions so as to reduce a length of the conversation (block 552).
At block 582, the system may access data including descriptions of various related ideas. The data may include human-generated information pertaining to the ideas. The data may include audio data, and/or may be particular to a given user. If the data includes audio data, then block 582 may involve performing speech-to-text transcription on the audio data to generate a textual representation of the input suitable for use at block 586.
At block 586, relationships among the ideas may be established by determining that two ideas are correlated (block 588). Two ideas may be considered correlated, for example, when the two ideas occur together in the presence or absence of particular context conditions. The context may depend on the application. In another example, two ideas may be considered correlated when the two ideas occur together only a limited number of times (e.g., less than a predetermined number of times), but occur together in the presence of the context condition. For instance, in a system used to guide a conversational chatbot, two words may be considered correlated when they appear together in a transcript of human speech or a dialog (e.g., a messaging conversation), indicating that humans tend to use these words together when conversing. This may be true even when these words do not appear often in other types of written texts, such as journal articles, news stories, etc. In another example, two words may be considered semantically correlated when they appear together when discussing a particular topic; for example, in a typical conversation it may be relatively rare for a person to use the words “mouse” and “wireless” in the same sentence, but this may not be unusual when the context in which the conversation is taking place is centered around a discussion of computer input technology.
In order to establish the relationships, at block 590 a correlation value may be assigned to the correlated ideas, and correlated ideas having the highest correlation values may be selected and identified as being correlated (block 592). The relationships may be established using a representation of an artificial neural network configured to be employed to establish the relationships between the ideas (see
At block 594, the established relationships may be used to generate a representation of a graph, such as the causal graph shown in
The apparatus 600 includes a network interface 602 for receiving input data and/or training data over a network 604 (such as the Internet), and/or for providing an output of the system to a remote recipient over the network 606. The network interface 602 may be or may include hardware, such as a network interface card (NIC).
The apparatus 600 further includes a non-transitory computer readable storage medium 606, which may be a hardware medium such as random access memory, a storage device such as a hard disk drive or solid state drive, etc. The medium 606 may store a variety of data structures configured to be processed and/or executed by a hardware processor circuit 620. For example, the medium 606 may store a graph 608 and an artificial neural network (ANN) 610, such as the causal graph and ANN described above.
Furthermore, the medium 606 may store digital processing logic 612 including instructions configured to be executed by the hardware processor circuit 620. The logic 612 may include structural learning logic 614 suitable for training the ANN 610 and/or constructing the graph 608 based on input data 616. The input data 616 may include data from one or several sources, and may include digital text obtained from the network 604. The text may include, for example, data from a communications service or social network, web pages, journal articles, news stories, etc.
The above-described methods may be embodied as instructions on a computer readable medium or as part of a computing architecture.
As used in this application, the terms “system” and “component” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution, examples of which are provided by the exemplary computing architecture 700. For example, a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers. Further, components may be communicatively coupled to each other by various types of communications media to coordinate operations. The coordination may involve the uni-directional or bi-directional exchange of information. For instance, the components may communicate information in the form of signals communicated over the communications media. The information can be implemented as signals allocated to various signal lines. In such allocations, each message is a signal. Further embodiments, however, may alternatively employ data messages. Such data messages may be sent across various connections. Exemplary connections include parallel interfaces, serial interfaces, and bus interfaces.
The computing architecture 700 includes various common computing elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input/output (I/O) components, power supplies, and so forth. The embodiments, however, are not limited to implementation by the computing architecture 700.
As shown in
The system bus 706 provides an interface for system components including, but not limited to, the system memory 704 to the processing unit 702. The system bus 706 can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Interface adapters may connect to the system bus 706 via a slot architecture. Example slot architectures may include without limitation Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), and the like.
The computing architecture 700 may comprise or implement various articles of manufacture. An article of manufacture may comprise a computer-readable storage medium to store logic. Examples of a computer-readable storage medium may include any tangible media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. Examples of logic may include executable computer program instructions implemented using any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, and the like. Embodiments may also be at least partly implemented as instructions contained in or on a non-transitory computer-readable medium, which may be read and executed by one or more processors to enable performance of the operations described herein.
The system memory 704 may include various types of computer-readable storage media in the form of one or more higher speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, an array of devices such as Redundant Array of Independent Disks (RAID) drives, solid state memory devices (e.g., USB memory, solid state drives (SSD) and any other type of storage media suitable for storing information. In the illustrated embodiment shown in
The computing architecture 700 may include various types of computer-readable storage media in the form of one or more lower speed memory units, including an internal (or external) hard disk drive (HDD) 712, 756, a magnetic floppy disk drive (FDD) 714 to read from or write to a removable magnetic disk 716, and an optical disk drive 718 to read from or write to a removable optical disk 720 (e.g., a CD-ROM or DVD). The HDD 712, FDD 714 and optical disk drive 720 can be connected to the system bus 706 by an HDD interface 722, an FDD interface 724 and an optical drive interface 726, respectively. The HDD interface 722 for external drive implementations can include at least one or both of Universal Serial Bus (USB) and IEEE 694 interface technologies.
The drives and associated computer-readable media provide volatile and/or nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For example, a number of program modules can be stored in the drives and memory units 708, 712, including an operating system 728, one or more application programs 730, other program modules 732, and program data 734. In one embodiment, the one or more application programs 730, other program modules 732, and program data 734 can include, for example, the various applications and/or components of the messaging system 500.
A user can enter commands and information into the computer 701 through one or more wire/wireless input devices, for example, a keyboard 736 and a pointing device, such as a mouse 738. Other input devices may include microphones, infra-red (IR) remote controls, radio-frequency (RF) remote controls, game pads, stylus pens, card readers, dongles, finger print readers, gloves, graphics tablets, joysticks, keyboards, retina readers, touch screens (e.g., capacitive, resistive, etc.), trackballs, trackpads, sensors, styluses, and the like. These and other input devices are often connected to the processing unit 702 through an input device interface 740 that is coupled to the system bus 706, but can be connected by other interfaces such as a parallel port, IEEE 694 serial port, a game port, a USB port, an IR interface, and so forth.
A monitor 742 or other type of display device is also connected to the system bus 706 via an interface, such as a video adaptor 744. The monitor 742 may be internal or external to the computer 701. In addition to the monitor 742, a computer typically includes other peripheral output devices, such as speakers, printers, and so forth.
The computer 701 may operate in a networked environment using logical connections via wire and/or wireless communications to one or more remote computers, such as a remote computer 744. The remote computer 744 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer 701, although, for purposes of brevity, only a memory/storage device 746 is illustrated. The logical connections depicted include wire/wireless connectivity to a local area network (LAN) 748 and/or larger networks, for example, a wide area network (WAN) 750. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, for example, the Internet.
When used in a LAN networking environment, the computer 701 is connected to the LAN 748 through a wire and/or wireless communication network interface or adaptor 752. The adaptor 752 can facilitate wire and/or wireless communications to the LAN 748, which may also include a wireless access point disposed thereon for communicating with the wireless functionality of the adaptor 752.
When used in a WAN networking environment, the computer 701 can include a modem 754, or is connected to a communications server on the WAN 750, or has other means for establishing communications over the WAN 750, such as by way of the Internet. The modem 754, which can be internal or external and a wire and/or wireless device, connects to the system bus 706 via the input device interface 740. In a networked environment, program modules depicted relative to the computer 701, or portions thereof, can be stored in the remote memory/storage device 746. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.
The computer 701 is operable to communicate with wire and wireless devices or entities using the IEEE 802 family of standards, such as wireless devices operatively disposed in wireless communication (e.g., IEEE 802.13 over-the-air modulation techniques). This includes at least Wi-Fi (or Wireless Fidelity), WiMax, and Bluetooth™ wireless technologies, among others. Thus, the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802.13x (a, b, g, n, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wire networks (which use IEEE 802.3-related media and functions).
As shown in
The clients 802 and the servers 804 may communicate information between each other using a communication framework 810. The communications framework 810 may implement any well-known communications techniques and protocols. The communications framework 810 may be implemented as a packet-switched network (e.g., public networks such as the Internet, private networks such as an enterprise intranet, and so forth), a circuit-switched network (e.g., the public switched telephone network), or a combination of a packet-switched network and a circuit-switched network (with suitable gateways and translators).
The communications framework 810 may implement various network interfaces arranged to accept, communicate, and connect to a communications network. A network interface may be regarded as a specialized form of an input output interface. Network interfaces may employ connection protocols including without limitation direct connect, Ethernet (e.g., thick, thin, twisted pair 10/100/1000 Base T, and the like), token ring, wireless network interfaces, cellular network interfaces, IEEE 802.8a-x network interfaces, IEEE 802.16 network interfaces, IEEE 802.20 network interfaces, and the like. Further, multiple network interfaces may be used to engage with various communications network types. For example, multiple network interfaces may be employed to allow for the communication over broadcast, multicast, and unicast networks. Should processing requirements dictate a greater amount speed and capacity, distributed network controller architectures may similarly be employed to pool, load balance, and otherwise increase the communicative bandwidth required by clients 802 and the servers 804. A communications network may be any one and the combination of wired and/or wireless networks including without limitation a direct interconnection, a secured custom connection, a private network (e.g., an enterprise intranet), a public network (e.g., the Internet), a Personal Area Network (PAN), a Local Area Network (LAN), a Metropolitan Area Network (MAN), an Operating Missions as Nodes on the Internet (OMNI), a Wide Area Network (WAN), a wireless network, a cellular network, and other communications networks.
The components and features of the devices described above may be implemented using any combination of discrete circuitry, application specific integrated circuits (ASICs), logic gates and/or single chip architectures. Further, the features of the devices may be implemented using microcontrollers, programmable logic arrays and/or microprocessors or any combination of the foregoing where suitably appropriate. It is noted that hardware, firmware and/or software elements may be collectively or individually referred to herein as “logic” or “circuit.”
It will be appreciated that the exemplary devices shown in the block diagrams described above may represent one functionally descriptive example of many potential implementations. Accordingly, division, omission or inclusion of block functions depicted in the accompanying figures does not infer that the hardware components, circuits, software and/or elements for implementing these functions would be necessarily be divided, omitted, or included in embodiments.
At least one computer-readable storage medium may include instructions that, when executed, cause a system to perform any of the computer-implemented methods described herein.
Some embodiments may be described using the expression “one embodiment” or “an embodiment” along with their derivatives. These terms mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. Moreover, unless otherwise noted the features described above are recognized to be usable together in any combination. Thus, any features discussed separately may be employed in combination with each other unless it is noted that the features are incompatible with each other.
With general reference to notations and nomenclature used herein, the detailed descriptions herein may be presented in terms of program procedures executed on a computer or network of computers. These procedural descriptions and representations are used by those skilled in the art to most effectively convey the substance of their work to others skilled in the art.
A procedure is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. These operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It proves convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to those quantities.
Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary, or desirable in most cases, in any of the operations described herein, which form part of one or more embodiments. Rather, the operations are machine operations. Useful machines for performing operations of various embodiments include general purpose digital computers or similar devices.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
Various embodiments also relate to apparatus or systems for performing these operations. This apparatus may be specially constructed for the required purpose or it may comprise a general purpose computer as selectively activated or reconfigured by a computer program stored in the computer. The procedures presented herein are not inherently related to a particular computer or other apparatus. Various general purpose machines may be used with programs written in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description given.
It is emphasized that the Abstract of the Disclosure is provided to allow a reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein,” respectively. Moreover, the terms “first,” “second,” “third,” and so forth, are used merely as labels, and are not intended to impose numerical requirements on their objects.
What has been described above includes examples of the disclosed architecture. It is, of course, not possible to describe every conceivable combination of components and/or methodologies, but one of ordinary skill in the art may recognize that many further combinations and permutations are possible. Accordingly, the novel architecture is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims.
Patent | Priority | Assignee | Title |
11669960, | Jan 24 2018 | FUJIFILM Corporation | Learning system, method, and program |
Patent | Priority | Assignee | Title |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 04 2019 | FLOREZ CHOQUE, OMAR | Capital One Services, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 051193 | /0728 | |
Dec 05 2019 | Capital One Services, LLC | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Dec 05 2019 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Sep 19 2024 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 13 2024 | 4 years fee payment window open |
Oct 13 2024 | 6 months grace period start (w surcharge) |
Apr 13 2025 | patent expiry (for year 4) |
Apr 13 2027 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 13 2028 | 8 years fee payment window open |
Oct 13 2028 | 6 months grace period start (w surcharge) |
Apr 13 2029 | patent expiry (for year 8) |
Apr 13 2031 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 13 2032 | 12 years fee payment window open |
Oct 13 2032 | 6 months grace period start (w surcharge) |
Apr 13 2033 | patent expiry (for year 12) |
Apr 13 2035 | 2 years to revive unintentionally abandoned end. (for year 12) |