Why Knowledge Representation and Reasoning is My Favorite Subject in Computer Science
I’m in the process of getting my Master’s in Computer Science at Arizona State University, and I have just finished taking the “Knowledge Representation and Reasoning” course.
In short, the course was super interesting and helped me to confirm the direction that I would like to pursue academically in the future.
If you have read some of my past articles, you probably know that I’m into philosophy, and particularly into the philosophy of idealism. The process of examining my mind is way more exciting to me than studying brains or behaviors. In particular, I like when I can spot patterns of how my mind “moves”, and when can formulate or even model these patterns. I believe that insights obtained from such an examination could be very valuable when solving all kinds of problems, especially when approaching one of the most challenging problems— modeling artificial general intelligence.
However, something that is more within reach that has really attracted my attention as I was navigating the course was the tools that this domain of knowledge provides. Tools that can help structure personal knowledge ranging from mathematics to domain-specific knowledge.
And this is where the course was a little bit off. As I was just getting started, I was under the impression that the course’s emphasis would be on the actual theory of how to represent knowledge. However, this was not the case. Instead, for the majority of the course, we were exploring the theory behind how reasoning is used for domain modeling, and, more specifically, the Answer Set Programming (ASP) syntax and semantics. Yet, there was a little bit of material about ontology at the very end of the course. So, to my mind, the course should really be called “Reasoning in Knowledge Representation” instead of “Knowledge Representation and Reasoning”.
The logical inference is very important when modeling knowledge because it significantly reduces the amount of information to be stored as a lot of intermediate facts could be inferred on demand. However, logic is not the only important component when representing knowledge.
As such, there was no real discussion on what makes one representation of knowledge more optimal versus another. For example, there was very little discussion on why representing knowledge as a tree is less optimal than a graph. Or, when representing knowledge as a graph, what would be the necessary and sufficient properties of it? What would be the fundamental entities that would allow to simplify the graph and facilitate inference? How do the known knowledgebases compare to each other? What are the lessons learned?
Luckily, we covered a little bit of the known knowledge bases, one of which attracted my attention in particular. That knowledge base was Cyc — pronounced as “sike”.
For one reason or another, there is not a lot of descriptive information about Cyc easily available on the Web. However, Lex Fridman has done a good job at interviewing Douglas Lenat, the founder of Cyc. In this interview, he describes the task of capturing common sense knowledge in an ontology format so that it could mimic the way humans reason using a set of innate (default) assumptions about the world. The interesting fact about it is that this project execution has spread over several decades due to the fact that such knowledge needed to be manually entered by researchers, as opposed to automatically inferred by an algorithm, as no such algorithm exists currently. This is a very laborious task, yet, in my opinion, far from being nonsensical as the very least such project could provide is lots of insight on the problem as well as human common sense knowledge and serve as a source of many lessons learned.
At this point, my goal is to learn as much as I can about this and other similar knowledge bases and share the insights I get from them, and my hopes are really high. I also hope to start capturing my personal knowledge using the tools I discovered. However, one stumbling block I’ve encountered so far, is that the web services associated with knowledge bases are either non-existent or not very user friendly. I’m not entirely sure why that is the case yet.
To conclude, despite its challenges and some drawbacks, I feel like the “Knowledge Representation and Reasoning” course has given me a new vantage point for further exploration of the domain that aligns very well with my personal interests, which is why I consider it to be my favorite subject, and I would highly recommend this or similar courses to other students.