AI â Thoughts and Rants
This summer semester I decided to take Introduction to Artificial Intelligence, which the university I go to offers as an elective for CS majors. Which is awesome, I know! As a computer science student I had been curious for a while about the robots, talking computers that assist Iron Man, and even the âmagicâ behind things like Siri. Yes even I, someone who is in the âknowâ about a field like software engineering, which is intertwined with AI in more ways than one, fantasizes (or used to, maybe?) about a future where robots assist us on all kinds of tasks and make our lives better/easier, or in the case of I, Robot, a lot worse. All jokes and fiction aside, the fact is that AI exists already in our lives. In fact it is so infused with our day-to-day lives that we donât even notice it. You ever look at the weather app on your phone? Do you ever go to Google Translate? Do you ever ask Google for directions? Do you ever ask Siri anything? All of these things use some technique that was born in the field of AI, or machine learning (which is a very close sibling to AI). I could go into all  kinds of impressive, and not-so-impressive, techniques that I learned about in the class. A-Star search; Informed Search; Probabilistic Reasoning; Markovian Models; Neural Nets, etc. But this is not the reason why I write this.
The reason why I write this essay/blog post is because a friend of mine, who is planning on taking the class next semester, asked me a very simple question, âHow is AI?â. Well...the truth is that is not a simple question at all. Itâs a tough question. Because I do have MANY reservations about AI. They range from the philosophical, technical and even reach out to my ethical concerns about Artificial Intelligence. Now, before I go on, I want to be clear about something: THIS IS A BIASED PIECE. As I go on, youâll notice I have specific opinions about AI as a software engineer. I also want to state that this is NOT a piece meant to attack/offend anybody/anyone/ any organization that is researching AI or building products powered by AI/machine learning. I think you are all awesome people(a little crazy, but in a good way), and you have my utmost and sincere respect. Now that that is out of the way, letâs get down to business.
Before coming to this class I thought AI was an awesome/fascinating field(at the moment I still do). That with everyoneâmainstream media, programmers, Google, Microsoftâhyping up AI, I thought to myself, there has to be reason for all the buzz and fuzz about this âAI thingâ . And to be honest, MOST of it is undeniably granted. So...as a software engineer I was surprised by how mathematical AI really was. Youâd think that a field that is, as stated before, so infused with our lives would be somewhere on the vicinity of software engineering in regards to practicality. But itâs truly not. The truth is that a lot of problems, rightfully so, have to be theorized/generalized in some way before theyâre solved in an intelligent manner by a machine. And this makes sense. Think about it, if you want to talk about path-finding, âpathsâ arenât simply cities A-F, and find the shortest path. This could be the surface of a new planet with a different landscape, New York, a colony in the moon or you might even have a case where youâre concerned about the cost of moving a piece on a chessboard. Itâs also not just about making the algorithm fast. And itâs not that AI doesnât welcome nice Big O notations like constant time and linear and logNâand these are becoming less central to any algorithm given all of the crazy-fast hardware we have today and the crazier-faster that is still to come. These are, like any algorithm, preferred over N^2 or something above that. However, AIâs top priority to my understanding(at least if I learned what I was supposed to learn), is to solve problems, or find answers, in an intelligent way.
But what the in the world does intelligent mean, anyway?
This is when AI becomes philosophical. And, if you ever take this class(or at least the specific AI class I took), you wonât be tested on the philosophical definitions of AI. But even though you wonât be tested on those when doing the projects, which is the most important part of the class, you wonât directly use anything philosophical, itâs worth keeping in mind that any algorithm in AI is trying to do things intelligently. This means that brute force is not welcome; that randomness, with some exceptions(like hill climbing), is not very welcome; most things that arenât generalized(in an intelligent manner) are not very welcome. This is one of the reasons why AI is math-heavy: AI scientists need a way to generalize intelligence. But how general can intelligence really be? Can it really mimic the intelligence of a human to the point that it can compose songs, write an essay on the politics of the world and even make moral judgments? At the end of the day, not really. I mean you can take all of the songs recorded up to this day, and write a fancy neural net(donât ask me how they work, theyâre not super-complicated, but not a walk-in-the-park either) and it can classify and recognize some patterns and put something togetherâŚ.but itâs just re-mixing what weâve already heard and listened to a million times. So no, AI is not that general. The AI of today is very narrow. This is not to say that it is useless. AI is very useful and will be in the future; speech recognition will get better; self-driving cars will improve; it will be able to write âbetterâ songs. But AI wonât have a face; it wonât (and this is subjectively my opinion) have the ability to make moral judgments(and if we allow it to, then we are fools buying snake oil). As a software engineer I found the radical uses of Bayes Theorem somewhat interesting, but not very exciting. I found myself subscribing to the idea to program intelligence into the machine, rather than program it and tell it what to do. This, if Iâm being frank, made me a little uncomfortable. As a software engineer I like tinkering with machines, I like to write programs that solve problems(rather than âprogramâ intelligence and let It solve the problems for me). I felt as if I were being submissive to this ideaâI know, itâs a stretch. And yes, I am probably romanticizing programming as a craft, but Iâm sorry, I canât help it. Speaking of programming machines, that reminds me, to the AI people(and Iâm speaking about the specific people that guided me throughout the classâprofessors and TAs) the code did not matter. Which struck me as surprising, and a little unnerving. To them all that mattered was the theorems, excel charts and âreportâ. Which again, given the fact that the code itself in practice is the building block for the AI agent to do whatever it is that it needs to do, was unnervingâborderline frustrating. I donât write code to plot charts, theorize formulas or see trends. Thatâs not to say, I write code without documentation. Documentation is not what we are talking about here. Indeed, self-documented code is a must. But to write code to satisfy Bayes Theorem? That itself is frustrating and, in my opinion, goes against the spirit of creativity in programming. It goes against the lemma I follow when I codeâhack away. Hack the malloc calls to the point where all of the segments you allocate are continuous; trick the OS into caching at all levels only your processes; manipulate CPU priorities to make your process priority 1 because the game youâre building is over-bloated with physics calculations and unnecessary art, and that computer does not have a GPU. AI felt nothing like hacking computers. AI felt nothing like engineering solutions. It felt like forcing code to comply with some theoremâBayes Theorem,  making informed decisions, Perceptron, etc. I seriously respect these techniques, because all of them are incredibly cool and quite impressive. And heck, software engineers do use these techniques today. But, in my humble opinion, an engineer doesnât have to fully comply with a mathematical rule. They are nice because they make a bunch of assumptions that MOST of the time are true. But in engineering, when we have to directly sometimes interact with hardware and users, some of these assumptions are not very useful in practice. Sometimes as engineers, if we were building an OS, one might have to hard-code stuff with macros in C to make a specific architecture/piece of hardware faster. Sometimes in software engineering, one doesnât have the luxury of just âthrowing memoryâ at a problemâwhich is part of the idea of machine learning, along with some statistics. Throw memory at it, implement perceptron and you can classify pictures! Engineers have to keep in mind the cost of adding two gigs of ramâcost in terms of money and resources. As an engineer, when handling CPU scheduling, sometimes one doesnât know what the best scheduling scheme is. Sometimes engineers have to wait till users actually use the software, and get a âfeelâ for whatâs the best CPU scheduling scheme, given the different use cases. AI doesnât like hard-coded macros, thatâs not intelligent. AI doesnât love edge-cases hacks, thatâs not intelligent. AI doesnât care about beautiful code that might be 10% faster because one follows good practices. AI, from the impression I got in this class, is almost programming-independent. One might even say it finds programming languages hindering because there isnât a language that fully expresses how âgreatâ(ahem, intelligent) It really is. I could be wrong about these assumptions. Because, heck, what do I know? Iâm only a software engineer.
Despite my reservations about AI, I highly recommend taking the class as a CS major. Having said what I said, AI is not going away. For better or worse, it will stay in the lives of people, software engineers and not-software engineers. It is and will be a necessary evil of our present and future. Take the class, get a feel for what you think of it. And if youâre like meâyou like to hack computersâyouâll survive in that jungle of probability and intelligence greatness. I honestly canât tell you to stay or not, thatâs your choice. In the meantime, I choose not to.




















