Fluent (artificial intelligence)

From HandWiki

In artificial intelligence, a fluent is a condition that can change over time. In logical approaches to reasoning about actions, fluents can be represented in first-order logic by predicates having an argument that depends on time. For example, the condition "the box is on the table", if it can change over time, cannot be represented by [math]\displaystyle{ \mathrm{On}(\mathrm{box},\mathrm{table}) }[/math]; a third argument is necessary to the predicate [math]\displaystyle{ \mathrm{On} }[/math] to specify the time: [math]\displaystyle{ \mathrm{On}(\mathrm{box},\mathrm{table},t) }[/math] means that the box is on the table at time [math]\displaystyle{ t }[/math]. This representation of fluents is modified in the situation calculus by using the sequence of the past actions in place of the current time.

A fluent can also be represented by a function, dropping the time argument. For example, that the box is on the table can be represented by [math]\displaystyle{ on(box,table) }[/math], where [math]\displaystyle{ on }[/math] is a function and not a predicate. In first-order logic, converting predicates to functions is called reification; for this reason, fluents represented by functions are said to be reified. When using reified fluents, a separate predicate is necessary to tell when a fluent is actually true or not. For example, [math]\displaystyle{ HoldsAt(on(box,table),t) }[/math] means that the box is actually on the table at time [math]\displaystyle{ t }[/math], where the predicate [math]\displaystyle{ HoldsAt }[/math] is the one that tells when fluents are true. This representation of fluents is used in the event calculus, in the fluent calculus, and in the features and fluents logics.

Some fluents can be represented as functions in a different way. For example, the position of a box can be represented by a function [math]\displaystyle{ on(box,t) }[/math] whose value is the object the box is standing on at time [math]\displaystyle{ t }[/math]. Conditions that can be represented in this way are called functional fluents. Statements about the values of such functions can be given in first-order logic with equality using literals such as [math]\displaystyle{ on(box,t)=table }[/math]. Some fluents are represented this way in the situation calculus.

Naive physics

From a historical point of view, fluents were introduced in the context of qualitative reasoning. The idea is to describe a process model not with mathematical equations but with natural language. That means an action is not only determined by its trajectory, but with a symbolic model, very similar to a text adventure. Naive physics stands in opposition to a numerical physics engine and has the obligation to predict the outcome of actions.[1] The fluent realizes the common sense grounding between the robot's motion and the task description in natural language.[2]

From a technical perspective, a fluent is equal to a parameter that is parsed by the naive physics engine. The parser converts between natural language fluents and numerical values measured by sensors.[3] As a consequence, the human-machine interaction is improved.

See also

References

  1. L. Kunze and M. E. Dolha and M. Beetz (2011). "Logic programming with simulation-based temporal projection for everyday robot object manipulation". 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE. doi:10.1109/iros.2011.6094743. 
  2. Jakob Suchan and Mehul Bhatt (2017). "Commonsense Scene Semantics for Cognitive Robotics: Towards Grounding Embodied Visuo-Locomotive Interactions". 2017 IEEE International Conference on Computer Vision Workshops (ICCVW). IEEE. doi:10.1109/iccvw.2017.93. 
  3. Caiming Xiong and Nishant Shukla and Wenlong Xiong and Song-Chun Zhu (2016). "Robot learning with a spatial, temporal, and causal and-or graph". 2016 IEEE International Conference on Robotics and Automation (ICRA). IEEE. doi:10.1109/icra.2016.7487364.