tag:blogger.com,1999:blog-90237500432708638902018-09-16T23:07:44.809-07:00Noor Shaker BlogUnknownnoreply@blogger.comBlogger8125tag:blogger.com,1999:blog-9023750043270863890.post-13363106733532074082017-01-23T10:12:00.003-08:002017-01-24T00:39:58.806-08:00Video Games in the Eyes of Deep Neural Networks<div dir="ltr" style="text-align: left;" trbidi="on">Like many researchers, I'm impressed and very excited about the advances in the filed of deep learning that led to state-of-the-art solutions in many tasks. Recent models trained on very large datasets are shown to achieve a competitive (and in some tasks superior) performance to that reported by humans.<br /><br />Yet, despite these encouraging advancement, some of the best models were easily miss-led when presented with slightly modified, or noisy inputs<sup>1,2</sup>. I found this quite interesting as it reminds us that we are still quite far from human performance when it comes to generalisation, seeing things in context and transferring the knowledge we have about one domain to another.<br /><br />I have been doing research in the field of video games for a while and with the recent advancement in DNNs I thought it would be interesting to test some of these methods on video games. There is already some interesting work on teaching agents to play games using deep reinforcement learning methods by just looking at the pixels and learning the actions<sup>3,4</sup>. &nbsp;My interest however lies is training DNNs to pickup similarities between games by looking at gameplay videos. The problem is very interesting and challenging and I guess it will keep me busy for a while. I published initial results from classifying 200 games in a previous post (<a href="http://noorshakerblog.blogspot.dk/2016/09/content-based-game-classification-with.html">here</a>) and for now, I want to share something more fun.<br /><br />When I started my experiments, I did the very obvious first step: feeding images of games to an accurate pretrained deep neural network model and check what the model thinks about them. In my case, I used the VGG-16, a very popular and accurate models trained on the ImageNet dataset and achieved near human performance<sup>5</sup>. I thought this would be a good starting point to fine tune the model later on images from games but I wanted first to check the performance of the original model without fine tuning. So here I want to share some of the results I got, which I think are fun to look at. The model outputs probabilities of what it sees in an image (selected from 1000 different categories covering a wide range of objects) and I'm showing the five highest probabilities in the figures below.<br /><br />First, let's look at images where the model failed to capture what's in the image and produced (with high confidence) wrong classes. (The one I particularly like is the image of a treasure box where the network sees it as garbage! I guess these networks are of no use for treasure hunters yet!)<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-tgEmyGQqLxE/WIXHLafi4eI/AAAAAAAAToo/gdcB-Z0Tr10yw14FheJEWmAxWLev7l8MwCLcB/s1600/fool1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-tgEmyGQqLxE/WIXHLafi4eI/AAAAAAAAToo/gdcB-Z0Tr10yw14FheJEWmAxWLev7l8MwCLcB/s1600/fool1.png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>I find the results quite intriguing. On one end, they demonstrate that we still have a lot of work to do to achieve human-level context awareness and knowledge transfer capabilities, and on the other, at least in some cases, it is interesting to see why the network makes mistakes. It seems that humans would have fallen in the same trap if context, domain or experience information were not available (Such as in the last figure on the right where the network predicted a Balloon for a 2d character with a balloon-shaped head!).<br /><br />Now to be fair, the network did a good job in recognising quite a lot of images, specially those that simulates real objects with high quality graphics. Here are some examples from games such as: Bridge Project, Star Conflict, Among the Sleep, Alien Rage Unlimited, Maia and, Oniken.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0znW46Za058/WIXVVXC26tI/AAAAAAAATp8/h_IjtVYo3ic2msOEqivMH53m8AO7HKLyQCLcB/s1600/correct.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-0znW46Za058/WIXVVXC26tI/AAAAAAAATp8/h_IjtVYo3ic2msOEqivMH53m8AO7HKLyQCLcB/s1600/correct.png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both;">There is clearly a lot to be done before we achieve general intelligence. Neural networks are definitely becoming better in solving specific tasks and in building domain-specific knowledge. They are still far, however, from achieving high-level performance across domains.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">So, my next task will be to fine-tune these models and check how easily they can learn to comprehend the information of the new domain of games.&nbsp;</div><h3 style="clear: both;">References:</h3><div><ol style="text-align: left;"><li><a href="https://arxiv.org/pdf/1412.1897v4.pdf">Deep Neural Networks are Easily Fooled:High Confidence Predictions for Unrecognizable Images.</a></li><li><a href="https://www.cs.cmu.edu/~sbhagava/papers/face-rec-ccs16.pdf">Accessorize to a Crime: Real and Stealthy Attacks onState-of-the-Art Face Recognition</a></li><li><a href="https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf">Playing Atari with Deep Reinforcement Learning</a></li><li><a href="https://arxiv.org/abs/1509.02971">Continuous control with deep reinforcement learning</a></li><li><a href="https://arxiv.org/abs/1409.1556">Very Deep Convolutional Networks for Large-Scale Image Recognition</a></li></ol><br /><ol style="text-align: left;"></ol></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9023750043270863890.post-67597900138708919042016-10-20T01:56:00.000-07:002016-10-20T02:02:30.546-07:00Stop Writing Dead Papers<div dir="ltr" style="text-align: left;" trbidi="on"><br />The idea struck me while listening to Bert Victor's talk <a href="https://www.youtube.com/watch?v=ZfytHvgHybA" target="_blank">"Stop Drawing Dead Fish"</a> (and hence the title for this post).<br /><br />We have been writing and publishing papers for more than 500 years (according to Wikipedia, one of the earliest journals started in the 17th century!) and yet, somehow, we are still using the same format and writing our papers as if hardcopies are the main, if not the only, medium for distributing them. Now this is really disturbing as we are now living in the 21st century where we have a way more powerful medium available to us: the interactive digital interfaces.<br /><br />Most of academic papers written nowadays are dead: they are static with no interactive content. I'm talking particularly about papers reporting empirical results and showing graphs and tables filled with numbers and statistics, and supported with long discussions to help the reader understand and visualise (in her head) what can not be fully articulated by static content.<br /><br />Take for instance the figure below appeared in&nbsp;<span class="s1"><a href="http://arxiv.org/pdf/1406.1078v1.pdf">Cho <i>et al.</i> (2014)</a></span><span class="s2">&nbsp;paper, which is meant to visualise the space of representations of phrases of four words learned by a recurrent neural network. The authors clearly put a lot of effort into visualising the space and presenting their results in a convincing and expressive way. But because of the lack of interactive medium, they had to present the full graph (clearly hard to understand) and some closeups (not fully representative of the space).&nbsp;</span><br /><span class="s2"><br /></span><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-DxWWBOFXxjw/WAfirVP_g9I/AAAAAAAATj4/ludlN5urE4EXhNBfuBE-YA75lYuMPoMBwCLcB/s1600/dia.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="285" src="https://2.bp.blogspot.com/-DxWWBOFXxjw/WAfirVP_g9I/AAAAAAAATj4/ludlN5urE4EXhNBfuBE-YA75lYuMPoMBwCLcB/s400/dia.png" width="400" /></a></td></tr><tr><td class="tr-caption"><br />2–D embedding of the phrase representation learned with RNN. <a href="http://arxiv.org/pdf/1406.1078v1.pdf">Cho et al. (2014)</a></td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-6-7RbELjucg/WAfj3YhPzlI/AAAAAAAATj8/7ocIE_q64Qww-sypdxpMVxxYlwt3ChmrgCLcB/s1600/dia2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="216" src="https://2.bp.blogspot.com/-6-7RbELjucg/WAfj3YhPzlI/AAAAAAAATj8/7ocIE_q64Qww-sypdxpMVxxYlwt3ChmrgCLcB/s640/dia2.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Some zoom-ins from the figure above.&nbsp;<a href="http://arxiv.org/pdf/1406.1078v1.pdf" style="font-size: 12.8px;">Cho et al. (2014)</a></td></tr></tbody></table><span class="s2">This is not only&nbsp;inadequate, presenting a number of figures to support an argument also takes up a lot of the limited space available in academic papers, which can be put for better use. </span>Moreover, despite all these static illustrations, one wish she could hover over some points to highlight what they represent or zoom-in to get a better understanding.<br /><div class="separator" style="clear: both; text-align: center;"></div><br />While this format was totally accepted in the 17th century, it is way outdated in the 21st and no longer enough!<br /><br />To compensate for the limitations of this medium that poorly accommodates our goals, a number of researchers started a tradition of writing blog posts that serves as fancier versions of their papers, usually supported with interactive visualisations and easier-to-access and understand analytics. Take for instance <a href="https://colah.github.io/posts/2015-01-Visualizing-Representations/" target="_blank">this great blog </a>with many interactive examples for some of the results in <a href="https://fb56552f-a-62cb3a1a-s-sites.googlegroups.com/site/deeplearningworkshopnips2014/68.pdf?attachauth=ANoY7cq0ey7DQo5Oyr2dMzRzLGyCuBnIstwAoO-iuCB-yHXFOudjIs5kYPKP66yZoY4U8QvOFq9gIaUXhmAbXtsP2Vi5jYupiMRhW7gdMCgVyQxxdtnqxC3FiTrzP8NP8pBhr-q72Sk-1p1LTRBrYUGwU6_pGzdq8a20c6Qn16b2fn4ok7ryLcj1ipf1jOJ_oCKrSPH_BbEiR-clkSoimIdOz-ynOhYeckCMJE9rjztUriMHFLzoMPY%3D&amp;attredirects=0">Dai, et al. (2014)</a>&nbsp;paper that tries to cluster Wikipedia articles. You can still see the same figures presented in the paper (like the one below), while also being able to interact with them and play with the parameters.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-2TUNK3FKGIQ/WAfd7cNKgHI/AAAAAAAATjo/2AMXldH0FdwXja9Er-n1YJXf29uF21RkQCLcB/s1600/wiki.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="333" src="https://4.bp.blogspot.com/-2TUNK3FKGIQ/WAfd7cNKgHI/AAAAAAAATjo/2AMXldH0FdwXja9Er-n1YJXf29uF21RkQCLcB/s400/wiki.png" width="400" /></a></td></tr><tr><td class="tr-caption">&nbsp;Visualisation of Wikipedia paragraph vectors using t-SNE.&nbsp;Dai, et al. (2014)</td></tr></tbody></table>Now I understand that this does not apply equally to all fields (I don't expect researchers working in the field of literature to move directly, or accept such a new medium). But I believe that researchers with a computer science background to be capable of making, and arguably welcoming, such move. I believe such functionalities could be integrated in new editing tools or traditional ones (such as LaTex web-based editors), and ultimately, if papers could be submitted in a scripting language format, say in php (or an editor built on top of it) in which many interactive tools already available can be easily integrated, one could have the opportunity to take creativity and accessibility of academic papers to a whole new level.<br /><br />As someone who read, write and review papers, I'm really looking forward to the day where academic papers become more interactive and I strongly believe that this will lead to research that is highly accessible, easier to understand and evaluate and more fun to work with.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9023750043270863890.post-28100708202550137332016-10-04T08:08:00.002-07:002016-10-08T23:45:27.989-07:00Experience-Driven Content Generation: A Brief Overview<div dir="ltr" style="text-align: left;" trbidi="on"><b><span style="font-size: 13.5pt;"><br /></span></b><span style="font-size: 13.5pt;">Exploring and implementing methods for measuring experience, understanding and quantifying emotions and personalising users' experience have been the focus of my research for quite sometime. In this post, I will try to summarise some of my knowledge in this area.</span><br /><h2 style="text-align: left;"><b><span style="font-size: 13.5pt;">The Big Picture</span></b></h2><div class="MsoNormal"><span style="font-size: 13.5pt;">My&nbsp;</span><span style="font-size: 18px;">theory</span><span style="font-size: 13.5pt;">&nbsp;is that: if I can accurately predict user’s affective states at any point during her interaction with a digital system, I can ultimately implement affect-aware methods that can automatically personalise the content leading to an improved and deeper user experience. I'm particularly interested in studying these aspects within the computer games domain as I believe games are a rich medium for expressing emotions, an interesting platform for collecting, recognising and modelling experience and an easy to controllable environment for personalisation of content. <o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="font-size: 13.5pt;">These ideas have gathered interest from numerous&nbsp;</span><span style="font-size: 18px;">researchers working in interdisciplinary&nbsp;areas trying to solve parts of the puzzles. There is for instance a whole field of research trying to measure and quantify emotions; a relatively new, but very fast growing, field on automatic generation of content in games (there is a new book about this subject <a href="http://pcgbook.com/" target="_blank">here</a>); and a growing interest in linking ideas from these two areas so that we can build content generators that are centred around users' experience as a core component in the content creation process.&nbsp;</span></div><div class="MsoNormal"><span style="font-size: 18px;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-1-eQi5QXCu0/V_Oy5gJ8A6I/AAAAAAAATiQ/BzFb2le4JSs98z2Te5U_SNgdY-Rc12rygCLcB/s1600/edpcg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://2.bp.blogspot.com/-1-eQi5QXCu0/V_Oy5gJ8A6I/AAAAAAAATiQ/BzFb2le4JSs98z2Te5U_SNgdY-Rc12rygCLcB/s400/edpcg.png" width="400" /></a></div><div class="MsoNormal"><span style="font-size: 18px;">&nbsp;</span><span style="font-size: 13.5pt;">&nbsp;&nbsp;</span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="font-size: 13.5pt;">None of the above is easy and&nbsp;</span><span style="font-size: 18px;">implementing</span><span style="font-size: 13.5pt;">&nbsp;a complete working system where all modules work together effectively is a big challenge.&nbsp;</span><span style="font-size: 13.5pt;">In my own work, I'm interested in&nbsp;</span><span style="font-size: 18px;">realising</span><span style="font-size: 13.5pt;">&nbsp;the affective loop in games (see the figure below). I have a working implementation of what I believe a simple, yet easily extendable prototype of how the whole framework works in the game&nbsp;<i>Super Mario Bros. </i>(speed forward to the end of the post if you are eager to play!).&nbsp;My work revolves around revising and improving the different parts of the system so that the framework becomes general enough to be applied to predicting users' affects and personalising experience in any game (or more broadly, any digital interface).&nbsp;</span></div><div class="MsoNormal"><span style="font-size: 13.5pt;"><br /></span></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-94kf3sSivS0/V_O7IuV9OXI/AAAAAAAATig/R5YoRIpXpds0iyMWnW1lrv6QhmLXD0q_ACLcB/s1600/loop.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="345" src="https://2.bp.blogspot.com/-94kf3sSivS0/V_O7IuV9OXI/AAAAAAAATig/R5YoRIpXpds0iyMWnW1lrv6QhmLXD0q_ACLcB/s400/loop.png" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The components of the experience-driven content generation framework.</td></tr></tbody></table><div class="MsoNormal"><span style="font-size: 13.5pt;">Ultimately, we want the system to be active (</span><span style="font-size: 18px;">accurately</span><span style="font-size: 13.5pt;">&nbsp;choosing what information is important to learn from), adaptive (continuously learning and improving),&nbsp;reactive (acting in real time),&nbsp;multimodal (utilising information about the user from different sources) and generic (working well in various applications). I have made a progress along a number of these lines and I will be sharing them in individual posts that will follow. For now, I want to share insights about some of the main considerations towards realising the framework.</span></div><h2 style="text-align: left;"><b><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Features for Measuring Player Experience</span></b></h2><div class="MsoNormal"><span style="font-size: 13.5pt;">If you survey the literature you will find numerous methods for gathering information of users' experience or emotion. Here are the three main dominant types:</span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><br /></span></div><div class="MsoNormal"><span style="font-size: 13.5pt;"><b>Subjective measures:</b> The most obvious measure is to ask players' about their experience. This method is the easiest to implement, and hence the widely used, but it comes with a number of limitations (including subjectivity, cognitive load and interruption of the experiment) as well as other concerns related to the nature of the&nbsp;</span><span style="font-size: 18px;">experimental</span><span style="font-size: 13.5pt;">&nbsp;design protocol. So, to compensate for the drawbacks, other complementary or alternative methods are usually employed to gather information from other modalities.&nbsp;</span></div><div class="MsoNormal"><span style="font-size: 13.5pt;"><br /></span></div><div class="MsoNormal"><b style="font-size: 13.5pt;">Objective measures:</b><span style="font-size: 13.5pt;">&nbsp;These are usually harder to control by the subject and therefore more reliable. Most of them also universal making them highly scalable. Your heart rate, for instance, can reveal information about your excitement and your brain activity can tell whether you are surprised, under cognitive load, or relaxed. Your facial expressions can tell if you are happy or angry and your head pose can tell whether you are engaged, attentive or bored. Information gathered by such measures is more reliable than the subjective ones but obviously harder to collect, annotate and analyse. Moreover, some of the equipments used for collection are quite intrusive that they can’t be used in real-life interaction settings. Therefore, most of the widely used methods rely on accessible and unintrusive&nbsp;</span><span style="font-size: 18px;">mediums such as web cameras and <a href="http://www.xbox.com/en-US/xbox-one/accessories/kinect" target="_blank">Kinect</a> devices</span><span style="font-size: 13.5pt;">&nbsp;to analyse facial expression, extract gaze information and capture body gesture to infer emotion.<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><b style="color: black; font-family: Times; font-size: 13.5pt;">Interaction data:</b><span style="font-size: 13.5pt;">&nbsp;The interaction between the users and the digital interface also holds patterns that can help us understand users' experience. Gameplay data for instance, is a rich, easy to collect, and reliable source of information for profiling players. By relying only on this modality, methods have been developed for predicting retention,&nbsp;</span><span style="font-size: 18px;">progression</span><span style="font-size: 13.5pt;">&nbsp;analysis, discovering design flaws and clustering players for target segment marketing and content&nbsp;</span><span style="font-size: 18px;">customisation</span><span style="font-size: 13.5pt;">.&nbsp;<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><o:p><span style="font-size: 13.5pt;">When it comes to modelling players experience in games, I believe a multimodal approach that combines and align information from multiple sources is the most effective. Gameplay data is the main source of information about experience that is usually&nbsp;</span><span style="font-size: 18px;">analysed</span><span style="font-size: 13.5pt;">&nbsp;by most studies in academia and the industry. I&nbsp;</span><span style="font-size: 18px;">believe</span><span style="font-size: 13.5pt;">&nbsp;information coming from relatively cheap sources such as the camera (which is already available in most gaming platforms) will soon become another standard for analysing emotion and improving the prediction of the experience,&nbsp;</span><span style="font-size: 18px;">especially</span><span style="font-size: 13.5pt;">&nbsp;with the recent advancement in accurate real-time prediction of emotion from videos of faces. I believe in the&nbsp;</span><span style="font-size: 18px;">not-too-distant future</span><span style="font-size: 13.5pt;">, there will be no need to ask users about their experience as other reliable modalities will provide accurate, less intrusive sources.&nbsp;</span></o:p></div><div class="MsoNormal"><br /></div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-aLgzMEfF08w/V_OugVmpTfI/AAAAAAAATiA/BFcHkdh9n1INI9xVs1UL5UXO2V2ojpBQACLcB/s1600/facesM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="296" src="https://1.bp.blogspot.com/-aLgzMEfF08w/V_OugVmpTfI/AAAAAAAATiA/BFcHkdh9n1INI9xVs1UL5UXO2V2ojpBQACLcB/s400/facesM.png" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Facial reaction of players playing Super Mario Bros. when losing, winning and faced with a challenging encounter.</td></tr></tbody></table><h2 style="text-align: left;"><span style="font-size: 13.5pt;">Methods for Feature Processing&nbsp;</span></h2><div class="MsoNormal"><span style="font-size: 13.5pt;">The above types of features come with different forms: some are&nbsp;</span><span style="font-size: 18px;">discrete</span><span style="font-size: 13.5pt;">&nbsp;numbers while others are sequences of temporal or spacial relationship. This means that different methods should be employed to handle each type and special care should be taken when combining different&nbsp;</span><span style="font-size: 18px;">sources</span><span style="font-size: 13.5pt;">&nbsp;of different nature. For instance, gameplay data can be collected as discrete statistics about different actions taken or as&nbsp;</span><span style="font-size: 18px;">continuous</span><span style="font-size: 13.5pt;">&nbsp;sequences of actions taken at each timestamp. Different methods can be applied in each case leading to various insights.&nbsp;</span></div><div class="MsoNormal"><span style="font-size: 13.5pt;"><br /></span></div><div class="MsoNormal"><span style="font-size: 13.5pt;">Discrete&nbsp;</span><span style="font-size: 18px;">features</span><span style="font-size: 13.5pt;">&nbsp;are the most common and can be directly processed by most machine learning methods (they should of course be cleaned and normalised in most cases).&nbsp;</span></div><div><span style="font-size: 13.5pt;"><br /></span></div><div class="MsoNormal"><span style="font-size: 13.5pt;">Features of continuous nature, such as objective measures of experience can be processed with methods that are sensitive to time-</span><span style="font-size: 18px;">series</span><span style="font-size: 13.5pt;">&nbsp;data such as <i>recurrent neural networks</i> and <i>regression analysis</i>. Sequences can also be processed to extract meta data such as frequently&nbsp;</span><span style="font-size: 18px;">occurring</span><span style="font-size: 13.5pt;">&nbsp;patterns. This can be done using <i>frequent pattern mining</i> methods.&nbsp;</span></div><div class="MsoNormal"><span style="font-size: 13.5pt;"><br /></span></div><div class="MsoNormal"><span style="font-size: 13.5pt;">Combining features from multiple modalities can be tricky especially if they are of different nature. The signals should be aligned and either transformed into the same space or handled on multiple resolutions. Take for instance a system receiving a continuous signal from a facial-emotion recogniser and discrete statistics about the keyboard buttons pressed. To combine such information, one option would be to process the continuous signal and transform it to discrete values of emotions calculated within specific intervals. Another option would be to handle each signal by an appropriate method and combine the results in a later stage. A third option would be to sync the features so that we can extract the facial reactions around each keyboard press action. &nbsp;</span></div><h2 style="text-align: left;"><b><span style="font-size: 13.5pt;">Methods for Modelling User Experience</span></b></h2><div class="MsoNormal"><span style="font-size: 13.5pt;">You can imaging user experience models as magic black-boxes where you feed them with information about your users and the interface they interact with and in-return, you get useful&nbsp;</span><span style="font-size: 18px;">categorisations</span><span style="font-size: 13.5pt;">&nbsp;or profiling that you can use for decision making</span><span style="font-size: 18px;">. The input information can be one or a combination of the features presented above. The output can be an estimation of how fit the content is for a particular user, what profile best match the user (is she a buyer in amazon, a fighter in a first-person shooter, a puzzle-solver in an online course) or a recommendation of the best adjustment of the interface that will increase user's engagement.</span></div><div class="MsoNormal"><span style="font-size: 13.5pt;"><br /></span></div><div class="MsoNormal"><span style="font-size: 13.5pt;">Now any machine learning methods that can accurately estimate the mapping between your input and output can be implemented. The most widely used methods for profiling for instance are supervised or unsupervised clustering and classification methods such as <i>support vector machines</i>, <i>self-organizing maps</i> or <i>regression models</i>. Non-linear regression models are more powerful when attempting to predict affective states based on behavioural information. One can use <i>neural networks</i>, <i>multivariate regression spline</i> models or <i>Random Forest</i> to reduce the size of the search space while optimising the mapping functions. When trying to come up with recommendations or personalised content,&nbsp;</span><span style="font-size: 18px;">efficient</span><span style="font-size: 13.5pt;">&nbsp;search and filtering methods can be applied such as </span><i style="font-size: 13.5pt;">collaborative filtering</i><span style="font-size: 13.5pt;">, </span><i style="font-size: 13.5pt;">genetic algorithms</i><span style="font-size: 13.5pt;"> or </span><i style="font-size: 13.5pt;">reinforcement learning</i><span style="font-size: 13.5pt;">. There are many interesting applications for each approach and the choice of the&nbsp;</span><span style="font-size: 18px;">appropriate</span><span style="font-size: 13.5pt;">&nbsp;method depends on the type of the data you have, the type of the problem you are trying to solve and the&nbsp;</span><span style="font-size: 18px;">characterisation</span><span style="font-size: 13.5pt;">&nbsp;of the insights you are interested in.&nbsp;</span><span style="font-size: 13.5pt;">&nbsp;</span></div><h2 style="text-align: left;"><b><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Adaptive User Modelling</span></b></h2><div class="MsoNormal"><span style="font-size: 13.5pt;">The experience models I talked about so far are average models, meaning: they apply equally to all players and they are not tied to a certain individual. They serve a very good purpose if we want to ship them with the system and if we are looking for methods that work well with the majority of users. But we can do better. <o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="font-size: 13.5pt;">The accuracy of the models is very much confined by the data used for training; your data need to be divers enough to include representatives of the&nbsp;</span><span style="font-size: 18px;">majority</span><span style="font-size: 13.5pt;">&nbsp;of your users. Event when your data distribution is wide enough, it is very likely that the method will not&nbsp;</span><span style="font-size: 18px;">recognise</span><span style="font-size: 13.5pt;">&nbsp;every individual. People are different and each of us has her unique preferences and ways of interactions. To accommodate for different personalities, one could implement adaptive systems that keep learning, improving, and personalising as the user interacts with the system. The models learned offline forms a good starting point for an initial rich experience and for learning more powerful personalised versions. Model improvement can be achieved through a brach of methods called <i>active learning</i>. Active learners attempt to improve their performance by sampling the instances from the space that lead to the fastest improvement. This means that they try to learn as much as possible about the user in the&nbsp;</span><span style="font-size: 18px;">quickest</span><span style="font-size: 13.5pt;">&nbsp;way possible so that they become more accurate predictors of experience. Doing so, they also become more personalised for a specific user.</span></div><h2 style="text-align: left;"><b><span style="font-size: 13.5pt;"><o:p>The Future</o:p></span></b></h2><div style="text-align: left;"><span style="font-size: 18px;">We live in a time where more and more data about the users is becoming available and where people from academia and the industry are eager to understand the users and make better decisions. We are also equipped with powerful methods that facilitate realisation of such goals. There are indeed a number of interesting research directions that can improve our understanding of users, emotions, behaviour and how emotion is manifistated through behaviour. Moreover, data-driven content&nbsp;personalisation&nbsp;is also a hot and interesting topic where lots of improvement could be done. I'm&nbsp;confident&nbsp;however that a lot can be achieved already with what we currently have in terms of data and methods. &nbsp;</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span style="font-size: 18px;">Now just for fun, I will leave you with an example where many of the ideas presented are implemented to improve the experience of the interaction with the system. &nbsp;&nbsp;</span></div><h2><span style="font-size: 18px;">Example: Content Personalisation in Super Mario Bros.</span></h2><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 3;"><span style="font-size: 13.5pt;">You will play an initial level of Super Mario Bros. and the system will collect information about how well you did. This information, along with your choice of the type of experience you would like to explore, are used by the system, using machine learning methods, to explore the space of possible content you would prefer. The best piece of content is then chosen and presented to you.&nbsp;</span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 3;"><span style="font-size: 13.5pt;"><br /></span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 3;"><span style="font-size: 13.5pt;">Let the fun begins! Try it <a href="http://noorshaker.com/TuxOpt780.html" target="_blank">here</a>&nbsp;(PS. you will need a browser with a support for java, otherwise, you can download the demo jar file from <a href="http://noorshaker.com/demos.html" target="_blank">here</a>&nbsp;(option 4)).&nbsp;</span></div><!--[if !mso]><style>v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style><![endif]--><!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Revision>0</o:Revision> <o:TotalTime>0</o:TotalTime> <o:Pages>1</o:Pages> <o:Words>2168</o:Words> <o:Characters>12363</o:Characters> <o:Company>ITU</o:Company> <o:Lines>103</o:Lines> <o:Paragraphs>29</o:Paragraphs> <o:CharactersWithSpaces>14502</o:CharactersWithSpaces> <o:Version>14.0</o:Version> </o:DocumentProperties> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>JA</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="276"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles></xml><![endif]--> <!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:Cambria; mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Cambria; mso-hansi-theme-font:minor-latin;} </style><![endif]--> <!--StartFragment--> <!--EndFragment--><br /><div class="MsoNormal"><br /></div><div class="MsoNormal"><h2 style="text-align: left;"><o:p>References</o:p></h2><div><o:p>If you would like to read more about the subject, there is a nice paper by Georgios Yannakakis and Julian Togelius that you can find <a href="https://www.itu.dk/~yannakakis/EDPCG.pdf" target="_blank">here</a>. The demo above is described in the paper <a href="http://noorshaker.com/docs/AIIDE.pdf" target="_blank">here</a>.</o:p></div></div><div class="MsoNormal"><o:p><br /></o:p></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9023750043270863890.post-58270946140875823382016-09-07T22:54:00.000-07:002016-11-03T06:10:45.173-07:00Content-based Game Classification with Deep Convolutional Neural Network<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><br /></td></tr><tr><td class="tr-caption" style="text-align: center;"><br /></td></tr></tbody></table><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-52mJiODIpak/V9AAMNhhxEI/AAAAAAAATcE/E4VZ39qr1XkVgO2qlZSdUhhsbQ5Cpig8wCPcB/s1600/download.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="508" src="https://4.bp.blogspot.com/-52mJiODIpak/V9AAMNhhxEI/AAAAAAAATcE/E4VZ39qr1XkVgO2qlZSdUhhsbQ5Cpig8wCPcB/s640/download.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 12.8px;">One thousand video clips of one hundred games. The games are clustered according to their t-SNE components applied on the output of a CNN trained to classify RTS games. You can interact with the interface</span><span style="font-size: 12.8px;">&nbsp;</span><a href="http://lynura.com/gameclassification.php" style="font-size: 12.8px;" target="_blank">here</a><span style="font-size: 12.8px;">.</span><br /><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dyvnDxrHa9IVmey4J80u4u5RaYD4McQ_HMAj4tysRQ0wAQJTZ0NaAeQOXe-ANDP6D_rw060m3uW1EmVK9IPrg' class='b-hbp-video b-uploaded' frameborder='0' /></div>The figure above generated in fast motion.</td></tr></tbody></table>The figure above is from an interactive demo for this article that you can find&nbsp;<a href="http://noorshaker.com/gameclassification.html" target="_blank">here</a>. I recommend that you have a look at it before continue reading.</div><h2 style="text-align: left;">Introduction</h2>A while ago, I started working on convolutional neural network within the computer game domain. I was particularly interested in expanding their success to video games and investigate whether they can be used to learn features about games similar to what they do with images and videos in many other areas. In this post, I will explain what I did so far and I will show some of the recent results.<br /><h2 style="text-align: left;">Goal</h2>There has been a lot of work recently on video classification, tagging and labelling. My interest lies in bringing these ideas to games. My hypothesis is that video game trailers and gameplay videos provide rich information about the games in terms of visual appearance and game mechanics that would allow CNNs to detect similarities along a number of dimensions by "watching" short video clips.<br /><h2 style="text-align: left;">Gameplay 2M dataset</h2>As you already know, CNNs are data hungry, so I started by collecting the data I need. I was looking for videos of gameplay classified according to a number of categories. The easiest way I found to collect the data is to prepare a list of game titles, download YouTube videos of gameplay form different channels and associate each game with a set of categories I eventually got form Steam.<br /><br />So, I initialised the process and I started running experiments when I had data for 200 games ready. For each game, I downloaded 10 gameplay video. Since those vary in length, I cropped a 5-minute segment from each of them. Then for each segment, I randomly sampled 10 half-second shorter clips. Finally, from these short clips I extract 100 frames. If you do the calculation, you will see that I ended up with 100*10*10 = 10000 gameplay images per game, so the dataset I will be using for this post contains 2M gameplay images.<br /><br />As for the game classes, I query Stream on categories assigned to each game by the users. I ended up with a 24-D vector of categories including whether the game is an <i>action</i>, <i>single-player</i>, <i>real-time strategy</i>, <i>platformer</i>, <i>indie</i>, <i>first-person shooter</i>, etc. Each game is assigned to one or more of these categories. To create one category vector for each game, I averaged them per category and used a simple step function with a threshold of 0.5 and assign the final vector to each game (more specifically, to each image).<br /><br />Here are some short clips from some of games I used for training and the categories they belong to according to Steam users:<br /><br /><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='220' height='200' src='https://www.blogger.com/video.g?token=AD6v5dzzezIa3aE6lqG8m2bUkwor-tvCO6UYfE9qtKYnxKBTBBCqJ5MrtXc3XOmvZ8njomglJe15x9Ll8u6uC7fTXg' class='b-hbp-video b-uploaded' frameborder='0' /></div><div style="text-align: center;"><i>Full Spectrum Worrier</i>: RTS = 1, Action = 1, Single-player = 0</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='220' height='200' src='https://www.blogger.com/video.g?token=AD6v5dy7r2oi47zr5z7jNTCXjdHfb5iSxQOTj_bW5fnjv8D15obudVRLyimtWHhnYlwxjKqU1okeKmqX5SDwVee-kg' class='b-hbp-video b-uploaded' frameborder='0' /></div><div style="text-align: center;"><i>Empire Total War</i>: RTS = 1, Action = 1, Single-player = 1</div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='220' height='200' src='https://www.blogger.com/video.g?token=AD6v5dwzRouZwoelgjVxJMEldTxVUUaDNvjsj_gIn6MmQAQ6-rReBLqxcoXUplwKPfm7iIoWuKXUEyigi-AuJRjoRQ' class='b-hbp-video b-uploaded' frameborder='0' /></div><div style="text-align: center;"><i>Team Fortress</i>: RTS = 0, Action = 0, Single-player = 1</div><h2 style="text-align: left;">Method</h2><div style="text-align: left;"><span style="font-size: small; font-weight: normal;">Most of recent work in deep learning rely on established state-of-the-art models and fine tune it on a new dataset. I follow this stream of work as training from scratch is very time and resource consuming. Some state-of-the-art CNNs are very good in extracting visual feature representations from raw pixel data. In my work, I use the convolutional layers of the VGG-16 model to extract generic descriptors from the gameplay images.</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">I train on static images of gameplay extracted from the videos (I believe adding temporal information will improve the results, but I wanted to start simple and build from there). I built classifiers for only the three categories: <i>RTS</i> games, <i>action</i> games and <i>single-player</i> games as those provided the most balanced data in terms of belonging to positive and negative classes but I will be running more experiments once I have more data.&nbsp;</div><div style="text-align: left;"><br /></div><div style="text-align: left;">To build the classifiers, I first pass all images through the convolution layers of the popular VGG-16 model to extract the visual feature descriptors that I later use to train NN classifiers. Each classifier constitutes of the convolutional layers from VGG-16 then two dense layers of 512 nodes each. Finally, I use a sigmoid function that output the probability of an image belonging to a class.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">I trained three binary classifiers to learn each category independently (I could as well have used other multilabel learning methods but this is what I use for now). I split the data into three sets for training (70%), validating (20%) and testing (10%).</div><h3 style="text-align: left;"><div style="font-size: medium; font-weight: normal;"><br /></div><div style="font-size: medium; font-weight: normal;"><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-h233qOVizRU/V9AmCcVKpKI/AAAAAAAATcM/AxOekPN-pF8HomLNkM-FGpxaUX96YbmHACLcB/s1600/my_vgg.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="29" src="https://3.bp.blogspot.com/-h233qOVizRU/V9AmCcVKpKI/AAAAAAAATcM/AxOekPN-pF8HomLNkM-FGpxaUX96YbmHACLcB/s640/my_vgg.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">VGG-16 artitecture with two dense layers of 512 nodes each.&nbsp;</td></tr></tbody></table></div></h3><h2 style="text-align: left;">Analysis, how good are the classifiers?</h2><div>The three classifiers performed remarkably well in terms of classification accuracy. I got accuracy up to 85% when classifying action games on the image level and the results for RTS and single-player games were slightly lower reaching 0.76% and 0.72%. &nbsp;I also calculated the accuracies in other settings where I average the performance per 0.5-sec clips, 0.5-min clips and per game. &nbsp;In some cases, it seems that looking at multiple images will indeed increase the accuracy while in others (when classifying action games), the model was just as accurate on individual images as it is on the whole game.<br /><br />Following some inspiring work (<a href="http://karpathy.github.io/2015/10/25/selfie/" target="_blank">here</a> and <a href="http://benanne.github.io/2014/08/05/spotify-cnns.html" target="_blank">here</a>), I further looked at the distribution of the classes according to the first two t-SNE components (performed on the PCA results of the output of the first dense layer of the classifiers). I did this for a sample of the dataset (neither my machine nor t-SNE has enough power to process the whole dataset) and you can clearly see the classification boundary between positive and negative samples on the 5-min clips.&nbsp;</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-SWaJ6qH4hyU/V9A_G2xoT-I/AAAAAAAATco/XtTWTPZU6l0YG4Zynqhsrl3S9ZAtUVbrwCK4B/s1600/RTS-tsne.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="160" src="https://2.bp.blogspot.com/-SWaJ6qH4hyU/V9A_G2xoT-I/AAAAAAAATco/XtTWTPZU6l0YG4Zynqhsrl3S9ZAtUVbrwCK4B/s200/RTS-tsne.png" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">t-SNE&nbsp;<span style="font-size: 12.8px;">visualisation of the distribution of 15000</span><br /><div class="p1">half-second clips classified by the <i>RTS</i> classifier.&nbsp;</div></td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-3_YD7uiiNcA/V9A_LPeU7CI/AAAAAAAATcw/X986EX9icv8YwbUn65ByaDjki-LPsjgMgCK4B/s1600/single-tsne.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="162" src="https://3.bp.blogspot.com/-3_YD7uiiNcA/V9A_LPeU7CI/AAAAAAAATcw/X986EX9icv8YwbUn65ByaDjki-LPsjgMgCK4B/s200/single-tsne.png" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">t-SNE visualisation of the distribution of 15000<br />half-sec clips classified by the <i>single-player </i>classifier.</td></tr></tbody></table><br /><a href="http://2.bp.blogspot.com/-SWaJ6qH4hyU/V9A_G2xoT-I/AAAAAAAATco/XtTWTPZU6l0YG4Zynqhsrl3S9ZAtUVbrwCK4B/s1600/RTS-tsne.png" imageanchor="1"></a></div><div style="text-align: left;">I also looked at the distribution of games as I thought this is particularly interesting because the network has no explicit information during training that specifies from what game the images come from (it only knows whether an image is from a particular class or not). If my genetic image descriptors are powerful enough, I expected images/clips of the same game to cluster together. So I regenerated the same figures as above, but this time the colour code I used was game titles so that images or clips belonging to the same game will be given the same colour.<br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-DS6ACG8vVfc/V9BBpYkmDuI/AAAAAAAATc8/EUSY0sUv9fEHuX2HXTF2kyfmNf49rpsZwCK4B/s1600/RTS_tsne_color.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="529" src="https://2.bp.blogspot.com/-DS6ACG8vVfc/V9BBpYkmDuI/AAAAAAAATc8/EUSY0sUv9fEHuX2HXTF2kyfmNf49rpsZwCK4B/s640/RTS_tsne_color.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Same figure as above but points are coloured <br />by game title (RTS classifier).</td></tr></tbody></table><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-3Nc9lGSK_-A/V9BB3ez039I/AAAAAAAATdI/mh59uc4quj0xIniikCEbOybM0J2GjNE9ACK4B/s1600/single-tsne_color.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="516" src="https://4.bp.blogspot.com/-3Nc9lGSK_-A/V9BB3ez039I/AAAAAAAATdI/mh59uc4quj0xIniikCEbOybM0J2GjNE9ACK4B/s640/single-tsne_color.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 12.8px;">Same figure as above but points are coloured <br />by game title (</span>Single-player classifier).</td></tr></tbody></table><br />You can clearly see some cluster of clips belonging to the same game preserved quite well. This is a really interesting finding as it seems that somehow the models learned an implicit representation of the games although they didn't really trained to recognise them. <br /><br />This last finding meant that games with similar visual features according to a given category should also be projected close to each other. So this time, I visualised the distribution of 5-min clips from the RTS classifier while showing the title of the games. Here is how the figure looks like with some zoom-ins.<br /><br /><div class="separator" style="clear: both; text-align: center;"><img border="0" height="298" src="https://4.bp.blogspot.com/-nwccvfHYuKA/V9ECY8dNboI/AAAAAAAATdY/TaGkjvqb96EEA4x-jS-GQZsyEcM4GG4wgCK4B/s640/t_sne_zoom1.png" width="640" /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-JbsNhfQtpd4/V9ECdJtOMwI/AAAAAAAATdo/LAibaFlAPAITSEekn9WjLCJ0tfgGAMfsgCK4B/s1600/t_sne_zoom3.png" imageanchor="1"><img border="0" height="297" src="https://2.bp.blogspot.com/-JbsNhfQtpd4/V9ECdJtOMwI/AAAAAAAATdo/LAibaFlAPAITSEekn9WjLCJ0tfgGAMfsgCK4B/s640/t_sne_zoom3.png" width="640" /></a></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><img border="0" height="298" src="https://2.bp.blogspot.com/-V-4qDcelppk/V9ECbJSCodI/AAAAAAAATdg/Fk1Rf0uUkvU1ZdLE-KsnxcuBfBI9SQxBQCK4B/s640/t_sne_zoom2.png" style="margin-left: auto; margin-right: auto;" width="640" /></td></tr><tr><td class="tr-caption" style="text-align: center;">Some zoom-ins from the t-SNE distribution of the output of the RTS classifiers.</td></tr></tbody></table><a href="http://4.bp.blogspot.com/-nwccvfHYuKA/V9ECY8dNboI/AAAAAAAATdY/TaGkjvqb96EEA4x-jS-GQZsyEcM4GG4wgCK4B/s1600/t_sne_zoom1.png" imageanchor="1"></a></div><h3 style="text-align: left;">Analysis, how different is the data?</h3>Of course some videos are better representative of a game than others and therefore I expect to get variations in accuracies on the images and videos levels. To give you an idea of how the accuracy changes per image, here are some of the results from the <i>action-games</i> classifier for seven games. The performance is clearly different among games but there are also clear fluctuations within the same game. For some games, such as <i>Hexen II</i> and <i>Team Fortress</i> (number one and five in the figure) you can confidently tell by looking at the graph that they have a strong action element.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-ARUAWSkacBo/V9EE3KZvosI/AAAAAAAATd0/MvjDD_kiqhwhSAq9CLeqWz4QjZBV7oy8wCK4B/s1600/act_all_web.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="298" src="https://3.bp.blogspot.com/-ARUAWSkacBo/V9EE3KZvosI/AAAAAAAATd0/MvjDD_kiqhwhSAq9CLeqWz4QjZBV7oy8wCK4B/s640/act_all_web.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Accuracy per image by the action game classifier for seven games.&nbsp;</td></tr></tbody></table>So, why do some images give high accuracies while others don't. What is it that the network is interested in? Since I'm using a pre-trained models for visual feature extraction, visualising the convolutional layers won't really help. I instead looked at the individual images with high and low accuracies for some games. Here is an example from the game <i>Hexen II </i>when the classifier is trained to see it as an action game<i>.</i><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-Nf9uKiXkP4k/V9EFqNm4zcI/AAAAAAAATeI/ZDCtHfYJnNoXRBKKulclkiqmFdUaG87RACK4B/s1600/act_per_image_dot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="344" src="https://4.bp.blogspot.com/-Nf9uKiXkP4k/V9EFqNm4zcI/AAAAAAAATeI/ZDCtHfYJnNoXRBKKulclkiqmFdUaG87RACK4B/s640/act_per_image_dot.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Accuracy per image for the game <i>Hexen II</i> by the classifier of <i>action</i> games.</td></tr></tbody></table>What I can tell for now (from these snapshots and many others I visualised), is that the amount of lighting matters quite a lot, the more the light, the higher the action. Similar analysis in RTS games showed that panels such as these below, even when only partially shown, are what contribute the most to recognising games as RTS.<br /><br /><a href="http://4.bp.blogspot.com/-398Xxej2P5k/V9EfB_m9dPI/AAAAAAAATeg/tgXNR2rVjxALPwW2MI7sGQKsIFpI6PDaACK4B/s1600/feh_013256_000001_output_00006_00006_00045_001.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://4.bp.blogspot.com/-398Xxej2P5k/V9EfB_m9dPI/AAAAAAAATeg/tgXNR2rVjxALPwW2MI7sGQKsIFpI6PDaACK4B/s400/feh_013256_000001_output_00006_00006_00045_001.jpg" /></a><a href="http://2.bp.blogspot.com/-Hcw6ph6URGs/V9Ee9NnK2vI/AAAAAAAATeY/NB-NWl3kFYw-wY_n-i_DBjIiRHYug-MmgCK4B/s1600/feh_012664_000002_output_00006_00000_00084_002.jpg" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-Hcw6ph6URGs/V9Ee9NnK2vI/AAAAAAAATeY/NB-NWl3kFYw-wY_n-i_DBjIiRHYug-MmgCK4B/s400/feh_012664_000002_output_00006_00000_00084_002.jpg" /></a><br /><br />For some videos, the models are more confused. This happens a lot when the category classified is a minor feature of the game and not one of its main characteristics. This in fact is the main reason I prefer to use a sigmoid function as an output for the classifiers. I can then interpret the output in a probabilistic form and say that a low probability translates to showing a small amount of a specific feature. This allows me to better understand the games and means I can define a similarity function on these vectors to find out what games are similar to each other and in what aspects, but more in that in the future. <br /><br />Finally, some snapshots from the demo you saw at the top of the page. Here, I tried to visualise the five-minute clips according to their t-SNE dimensions. Since I only care about their clusters, and not their exact position in the space, I calculated the distance between all of them and connect each node to 10 of its nearest neighbours. To make it easier to understand the graph, I also gave the nodes belonging to the same game the same colour. If you zoom-in you can see the titles of the games and what games are connected to each other. The figures below are from the results of the RTS classifier.<br /><br /><a href="http://2.bp.blogspot.com/-k5Xuzhga-Og/V9EkV_ujRbI/AAAAAAAATew/b5QUXkmvSmMXdeOwR38E0unE5AGghSCTQCK4B/s1600/download%2B%25283%2529.png" imageanchor="1"></a><a href="http://2.bp.blogspot.com/-gZgsjrRxMz8/V9EkXVNtjYI/AAAAAAAATe4/8nfC2OIHGVoXDeyoHbdEMNUSzD2yQvz1ACK4B/s1600/download%2B%25284%2529.png" imageanchor="1"></a><a href="http://3.bp.blogspot.com/-dI1KTcBtVOc/V9EkYppZbXI/AAAAAAAATfA/utjpC6zjC48aziMKihgQpYxK6WWv8B98gCK4B/s1600/download%2B%25284%2529.png" imageanchor="1"></a><a href="http://2.bp.blogspot.com/-MhzKxlBBN30/V9EkaFpmMMI/AAAAAAAATfI/WpLrj29hsF8omL4PLInOTAELfdjFjuY-ACK4B/s1600/download%2B%25286%2529.png" imageanchor="1"></a><a href="http://1.bp.blogspot.com/-bXXh2X4NnVM/V9EkbL0hp_I/AAAAAAAATfQ/2ejlPl0vZ5UnZ-0KkbMjL_CGuH43DMOoQCK4B/s1600/download%2B%25287%2529.png" imageanchor="1"></a><a href="http://4.bp.blogspot.com/-jpny3YfAst0/V9Ekb5R971I/AAAAAAAATfY/nOkhiga_4iQ12AhLeFuTZMbM4xWM8TPDgCK4B/s1600/download%2B%25288%2529.png" imageanchor="1"></a><a href="http://4.bp.blogspot.com/-Lj47EGdwvdQ/V9Ekc8KVwDI/AAAAAAAATfg/ZBUG5clpE2EF9KFNTUuMRyVftwM4QM-3ACK4B/s1600/download%2B%25289%2529.png" imageanchor="1"></a><a href="http://1.bp.blogspot.com/-GwRhGxVuphU/V9EkeGNBo9I/AAAAAAAATfo/i76iH-h6ptw--n1HfbnqctsxwqWiV0UnQCK4B/s1600/download%2B%252810%2529.png" imageanchor="1"></a><a href="http://1.bp.blogspot.com/-EQ6yf1sR5aY/V9Eke4JW2-I/AAAAAAAATfw/xWdLP4lN0J84jNr3nFeZqwkOaW-30AjvgCK4B/s1600/download%2B%252811%2529.png" imageanchor="1"></a><a href="http://4.bp.blogspot.com/-jx7mlegBQis/V9Ekf7WllmI/AAAAAAAATf4/ZAIVrumgJhQqJqq90AG9x-igYR6FIzmtgCK4B/s1600/download%2B%252812%2529.png" imageanchor="1"><img border="0" height="512" src="https://4.bp.blogspot.com/-jx7mlegBQis/V9Ekf7WllmI/AAAAAAAATf4/ZAIVrumgJhQqJqq90AG9x-igYR6FIzmtgCK4B/s640/download%2B%252812%2529.png" width="640" /></a><img border="0" height="512" src="https://1.bp.blogspot.com/-EQ6yf1sR5aY/V9Eke4JW2-I/AAAAAAAATfw/xWdLP4lN0J84jNr3nFeZqwkOaW-30AjvgCK4B/s640/download%2B%252811%2529.png" width="640" /><img border="0" height="512" src="https://4.bp.blogspot.com/-Lj47EGdwvdQ/V9Ekc8KVwDI/AAAAAAAATfg/ZBUG5clpE2EF9KFNTUuMRyVftwM4QM-3ACK4B/s640/download%2B%25289%2529.png" width="640" /><img border="0" height="512" src="https://1.bp.blogspot.com/-bXXh2X4NnVM/V9EkbL0hp_I/AAAAAAAATfQ/2ejlPl0vZ5UnZ-0KkbMjL_CGuH43DMOoQCK4B/s640/download%2B%25287%2529.png" width="640" /><img border="0" height="512" src="https://3.bp.blogspot.com/-dI1KTcBtVOc/V9EkYppZbXI/AAAAAAAATfA/utjpC6zjC48aziMKihgQpYxK6WWv8B98gCK4B/s640/download%2B%25284%2529.png" width="640" /><img border="0" height="512" src="https://2.bp.blogspot.com/-gZgsjrRxMz8/V9EkXVNtjYI/AAAAAAAATe4/8nfC2OIHGVoXDeyoHbdEMNUSzD2yQvz1ACK4B/s640/download%2B%25284%2529.png" width="640" /><img border="0" height="512" src="https://2.bp.blogspot.com/-k5Xuzhga-Og/V9EkV_ujRbI/AAAAAAAATew/b5QUXkmvSmMXdeOwR38E0unE5AGghSCTQCK4B/s640/download%2B%25283%2529.png" width="640" /><br />Now this certainly doesn't allow me yet to draw conclusions on what and how games are similar but I believe that with more data and classification of more dimensionalities, we can build a powerful tool for automatic content-based classification of games.<br /><br /><div style="text-align: left;">This work is done in collaboration with Mohammed Abou-Zleikha.</div><br /><br /><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9023750043270863890.post-67811606964372057812016-08-09T05:29:00.004-07:002016-08-28T04:12:46.531-07:00Summary: How to Start a Startup: Lecture 1 (by Y-Combinators)<div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">A year ago, I get an idea for an app that I believe can help improve parents' life by making it easier for them to connect with old friends and make new ones. I named it&nbsp;<a href="http://gomenura.com/"><span style="color: blue; font-size: 10.0pt;">Menura</span></a>&nbsp;and as I started working on it, I wanted to learn about the process of starting a new business and building a network. So I attended some events in Copenhagen, where I live, and I met some great people. One of them is David Helgason, the&nbsp;founder and former&nbsp;CEO of Unity. We talked about best practices when starting and the best resources to learn from. We mentioned reading books, meeting people among some other things, but the one thing he highly recommended was that I go and listen to the "<i><a href="http://startupclass.samaltman.com/"><span style="color: blue; font-size: 10.0pt;">How to start a startup</span></a></i>" lectures by Sam Altman, the president&nbsp;of&nbsp;Y-Combinators, and so I did.<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">The series contain 20 lectures of about 45 min length each and were presented initially at Stanford University in 2014. Sam brought together a great group of experienced and successful people to talk and share lessons from their own experience starting (now some million worth) startups. Speakers include for instance, Peter Thiel, known as the co-founder of PayPal,&nbsp;Reid Hoffman, co-founder of LinkedIn, Aaron Levie, co-founder of Box,&nbsp;Ben Silbermann, co-founder and CEO of Pinterest, and Paul Graham, the co-founder of Y-Combinators.<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">I listened to the lectures while Menura was in its early stages, and I enjoyed and learned a lot from everyone of them. But now that I'm almost done with the development phase that I need to execute the following steps, I feel like I don't recall many of the details in the lectures. So I decided to listen to them once more but this time, I decided to take notes of the important points to keep them as a reference for the future. I will be sharing my notes so anyone interested can benefit from them. Note however, that these are my personal notes which mean they are subjective and you might end up focusing on other ideas if you listen to the lectures yourself (which I highly recommend). Nevertheless, I think they are interesting and worth sharing.<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Without further due, let's get started!<o:p></o:p></span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 2;"><b><span style="color: black; font-family: &quot;times&quot;; font-size: 18.0pt;">Lecture 1: How to Start a Startup<o:p></o:p></span></b></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">To start a successful startup, you need to excel in four main areas:<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l2 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Idea:&nbsp;<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 72.0pt; mso-list: l2 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;courier new&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Execution is harder and 10 times more important<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 72.0pt; mso-list: l2 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;courier new&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Bad ideas are still bad (even with great execution)<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 72.0pt; mso-list: l2 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;courier new&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Think long term<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 72.0pt; mso-list: l2 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;courier new&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Should be difficult to replicate<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 72.0pt; mso-list: l2 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;courier new&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Needs critical evaluation that includes<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 108.0pt; mso-list: l2 level3 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 108.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;wingdings&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Market: size, growth<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 108.0pt; mso-list: l2 level3 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 108.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;wingdings&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Company: growth strategy<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 108.0pt; mso-list: l2 level3 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 108.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;wingdings&quot;; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">...<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l2 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Product<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l2 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Team<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l2 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Execution<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Where success = idea * product * team * execution * (<i>w</i>* luck)<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">where&nbsp;<i>w</i>&nbsp;is a number in the range [0,10000] and what is nice about it is that it is somehow controllable :).<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Starting a startup is really hard:<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l4 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Do not do it to become rich (there are easier ways)<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l4 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Do it if you have a solution to a problem<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l4 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Ideas first and startup second<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l4 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">The good idea is the one you think about frequently when not working<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You should focus on a&nbsp;<i>mission-oriented startup</i>:<o:p></o:p></span></div><ul type="disc"><li class="MsoNormal" style="color: black; mso-list: l0 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">You are committed = you love what you are doing<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l0 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">You have a great patience: startups take about 10 years<o:p></o:p></span></li></ul><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Good ideas are&nbsp;<b>unpopular but right</b>:<o:p></o:p></span></div><ul type="disc"><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">You can practice identifying them<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">They look terrible at the beginning<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Start with a small market to create a monopoly and then expand<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">You will sound crazy but be right<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Look for an evolving market (big in 10 years)<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">The market is better when it is small and growing rapidly, it means the market is more tolerant and hungry for a solution<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">You can change everything but the market<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Answer why now?<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">To build something you yourself need is better to understand the problem<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">The idea should be explainable in one sentence<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l9 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Think about the market (what people want) first<o:p></o:p></span></li></ul><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Good practice:<o:p></o:p></span></div><ul type="disc"><li class="MsoNormal" style="color: black; mso-list: l6 level1 lfo5; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Be confident<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l6 level1 lfo5; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Stay away from nay-sayers (most people if it is a good idea)<o:p></o:p></span></li></ul><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Good Product is&nbsp;<b>something users love</b>:<o:p></o:p></span></div><ul type="disc"><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Until you build it, nothing else matter<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Spend your time building and talking to customers<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Marketing is easy when you have a great product<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Better to build something a small number of users&nbsp;<i>love</i>&nbsp;than to build something a large number of users&nbsp;<i>like.&nbsp;</i>Easy to expand from there<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Find a small set of users and make them love what you are doing.&nbsp;<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Build a product that is so good that it will grow by the word-of-mouth<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Most companies dies because they didn't make something users love, not because of competition<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Start with something simple (I like what Leonardo Da Vinci said about this "<i>simplicity is the ultimate sophistication</i>" and Steve Jobs' famous quote "<i>Simple can be harder than complex</i>")<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Quality and small details matter<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Be there for your customers (even at midnight)<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Recruit feedback users by hand (this is the stage where I am at with Menura right now and I can't tell you how hard it is, you should literally send personal emails and messages to every single one of you potential interested users and you should keep the conversation going.)<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Do not do ads to get initial users, you don't need many, you need committed ones<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Loop from feedback to product decisions by asking the users:<o:p></o:p></span></li><ul type="circle"><li class="MsoNormal" style="color: black; mso-list: l7 level2 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">What they like/dislike<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level2 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">would they recommend it to others<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level2 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">have they recommend it already<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level2 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">what features would they pay for<o:p></o:p></span></li></ul><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Make the feedback loop as tight as possible for rapid progress<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Do it yourself (that includes everything, from development to marketing to customer support...)<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">Startups are build on growth, so monitor it<o:p></o:p></span></li><li class="MsoNormal" style="color: black; mso-list: l7 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: &quot;times&quot;; font-size: 13.5pt;">If this (your product) is not right, nothing else will matter<o:p></o:p></span></li></ul><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Discussion about team and execution is left to the next lecture and we will now move on to answer the most important question (in my opinion):&nbsp;<i>why you should start a startup?</i><o:p></o:p></span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 3;"><b><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Why you should start a startup?<o:p></o:p></span></b></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Probably you thought about it as being Glamorous (you will be the boss, it has attractive flexibility, you will be making impact and $$). In reality, however, it is a lot of hard work and it is pretty stressful. Here is why:<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You will be:<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l5 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">having a lot of responsibility<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l5 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">always on call<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l5 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">taking care of fundraising<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l5 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">gathering media attention (not always what you like to see)<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l5 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">5.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">strongly committed &nbsp;<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l5 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">6.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">managing your own psychology&nbsp;<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">And here is a more elaborate explanation of what you might think is attractive about it:<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l3 level1 lfo8; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Being the boss: not really true (you will be listening and executing everyone else needs and feedback)<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l3 level1 lfo8; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Flexibility: also not true as you will be always on call, you are the role model, you are always working&nbsp;<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l3 level1 lfo8; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Having more impact and more $$: you might actually make more money joining Facebook or Dropbox, and you get to work with a team so you might end up making more impact<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">After some thought provoking points, it is now time to find out the real reason you should have to start your own startup. It is actually pretty obvious: you simply&nbsp;<o:p></o:p></span></div><div align="center" class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 3; text-align: center;"><b><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">"<i>can't not do it</i>"<o:p></o:p></span></b></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">This means:<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l8 level1 lfo9; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You are passionate about it<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l8 level1 lfo9; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You are the right person<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l8 level1 lfo9; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You gotta make it happen<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l8 level1 lfo9; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You can't stop working on it<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l8 level1 lfo9; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">5.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">You will force yourself into the world to achieve your vision<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Pretty nice and thoughtful introduction. Now that was the end of the first lecture and the finishing slide was recommendations for some book.&nbsp;<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-wNxT8TEBhFs/V6nMCfaei5I/AAAAAAAATbA/CAqTtVM5kHkJ3fuswaaBJwXhUQzOMgB-QCPcB/s1600/books.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="267" src="https://1.bp.blogspot.com/-wNxT8TEBhFs/V6nMCfaei5I/AAAAAAAATbA/CAqTtVM5kHkJ3fuswaaBJwXhUQzOMgB-QCPcB/s400/books.png" width="400" /></a></div><div align="center" class="MsoNormal" style="text-align: center;"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">I have personally started reading Zero to One I'm really enjoying it (the rest are on my reading list, which is growing very fast :)). I will probably share some summaries about in another blog, but that's it for now.<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 3;"><b><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Main takeaways:<o:p></o:p></span></b></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">(These are the main points that stick into my mind after listening to the whole lecture)<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l1 level1 lfo10; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Ideas are important but execution is vital<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l1 level1 lfo10; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Make something people love<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l1 level1 lfo10; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">A small number of people loving your product is more important than a large number liking it<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l1 level1 lfo10; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Get your product right and everything else will follow smoothly from there<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l1 level1 lfo10; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">5.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">Build your own product-lover small community and rely on the power of WoM<o:p></o:p></span></div><div class="MsoNormal" style="margin-left: 36.0pt; mso-list: l1 level1 lfo10; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><span style="mso-list: Ignore;">6.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">If starting a startup is the thing you can't do without, then you are on the right track (good luck, enjoy the journey!). Otherwise, join one of the great companies.<o:p></o:p></span></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;">See you in the next lecture :)!<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="color: black; font-family: &quot;times&quot;; font-size: 13.5pt;"><o:p>&nbsp;</o:p></span>&nbsp;</div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9023750043270863890.post-29699650252490300182016-07-14T11:04:00.003-07:002016-08-28T04:11:23.369-07:00How Writing is Similar to Drawing<div dir="ltr" style="text-align: left;" trbidi="on">I like drawing, it has always been my hobby since I was a little girl. Somehow I grew up and I absorbed by the busy life that I didn't have time to draw any more. Recently, I missed it so much, and had a number of motivations, that I started drawing again, from the basics this time. As a grown up, I'm enjoying this process even more as I find it quite rewarding. It is a nice way to relax and let the ideas flow into my head. Many of my "great" (because they are mine :)) ideas come while I'm drawing.<br /><br />So, starting from the basics, the first thing I learnt about is to start with a simple sketch highlighting the main features and proportions of the drawing. For instance, if I'm going to draw a human in specific pose from a specific perspective, I should start with basic shapes, usually lines and spheres depicting where each part should be placed.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-D1HwF9XINB8/V4fUFIG7AGI/AAAAAAAATUo/bZsa6qy4uw81EWPVmbCjf1pCwSzOKQl_wCLcB/s1600/IMG_0146.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-D1HwF9XINB8/V4fUFIG7AGI/AAAAAAAATUo/bZsa6qy4uw81EWPVmbCjf1pCwSzOKQl_wCLcB/s320/IMG_0146.JPG" width="320" /></a></div><div style="text-align: center;"><span style="font-size: x-small;">Simple sketching while learning the basics</span></div><br />The next step would be to do another scan and add more details about the main shapes such as the shoulders, the chest, the arms and the legs. I then refine the drawing once more to add more features about the clothes, the face and the hair. Finally, I put in the final touches on the small details of the face, hair style and cloths.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-XGNo7kmEcwE/V4fUFO1JriI/AAAAAAAATUk/ff-FFe_2rtYMkiBKg0N1AtHKiAQMRj6AgCLcB/s1600/IMG_0145.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-XGNo7kmEcwE/V4fUFO1JriI/AAAAAAAATUk/ff-FFe_2rtYMkiBKg0N1AtHKiAQMRj6AgCLcB/s320/IMG_0145.JPG" width="320" /></a></div><div style="text-align: center;"><span style="font-size: x-small;">Sketches about different poses</span></div><div style="text-align: center;"><span style="font-size: x-small;"><br /></span></div>Starting with a sketch helps a lot with making sure the final drawing makes sense. Otherwise, it is very likely that I will end up with wrong proportions and wired looking gesture even if the details are good.<br /><br />As a researcher, a big part of my job requires writing. Whether papers, articles, book chapters and blogs. Recently, while writing an article, it occurs to me that writing a good article is similar in many ways to making a good drawing. Meaning, if I have an idea of what I would like to write about, then a good article should start with a sketch about the main topics I will be covering and the length I should span in each (the lines and circles in a drawing). This ensures I don't go off-topic, that there is no overlap between the sections and that I don't expand in one area at the price of another. From there, the process follows quite smoothly; refining each section by adding subsections and a few points about what each covers (specifying and putting the basic shapes of a drawing in place); another scan to rewrite the points into sentences (adding more features for each shape) and finally adding more details and making sure everything connects smoothly (final touches on a drawing).<br /><br />I like the idea of connecting two seemingly unrelated processes and I find it quite intriguing. I hope this realisation will help me (and you) enjoy writing and drawing even more :).</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9023750043270863890.post-35517841301601063182016-04-27T12:04:00.000-07:002016-08-28T04:11:50.971-07:00Ideas, ideas, and more ideas...<div dir="ltr" style="text-align: left;" trbidi="on"><div dir="ltr" style="text-align: left;" trbidi="on"><br /></div>Here is a list of project ideas I'm interested in but unfortunately not having enough time to work on by my own, I could certainly use some help :). Some of which are projects/services while others are (what I believe to be) useful mobile apps. I can supervise/co-found or advice any of them. If you are interested in more information, drop me a line. I will keep updating the list as I find time and as new ideas come to my mind.<br /><h3 class="MsoNormal">Misc.:&nbsp;</h3><ol><li class="MsoNormal">A GoodReads-like website for research papers: I like how Goodreads works and I think it would be great if we could build a similar platform specifically for research papers. I think rating and reviewing papers through a similar platform is more reliable and useful than the current citation mechanism. Usually when you read papers, you could like some while not cite them yet (which, in the current citation system, means they won’t get any credit and your friends won't know you read these papers and found them nice). I believe such reviewing and sharing system could potentially substitute Google Scholar (on the long run); papers will be evaluated by a wider audience that includes whoever reads the paper (and not only by the smaller network of people who cite it). Papers will be evaluated by the crowd eliminating some of the inherent limitations of Google Scholar especially the Matthew effect and the Vulnerability to spam (I borrowed these fancy words from Wikipedia ;-)).</li><li class="MsoNormal">A collaboration platform for researchers that facilitates proposal of research ideas, discussions and collaborations on projects: Occasionally, I have interesting ideas that I would like to see implemented but I often lack the necessary expertise or knowledge in all the technologies needed to bring the idea to life. I might as well have the knowledge but lack the time to do the whole project on my own. I believe many of the researchers I know share the same experience. In the platform I propose, one could share a high level description of the idea and list the knowledge she is missing and the sort of collaboration she is looking for. Others can view, comment or start a serious discussion about possible collaboration. I believe we as researchers need to talk more to each other (and by other here, I mean researchers from other fields who we don’t usually meet in the conferences we usually go to). My hope is that such a platform could encourage collaborations among researchers who don’t usually get to talk or meet each other and foster discussions that advance research.</li><li class="MsoNormal">A website with articles about the recent trends in machine learning/ data mining and AI: I know how hard it can be for Arabic-speaking student, especially in the IT field, to find useful resources even with the wealth of information on the Internet (which might also be a curse if you are new and want to navigate your way and filter what Google gives you). So, a while ago I decided to build a website where I write short articles on topics related to recent trends and techniques in machine learning and data mining. The idea is that the articles should be short, focused, easy to understand, example-oriented and in Arabic. That is because I wanted them to appeal not only to IT students, but to whoever interested in advancing her knowledge in these areas. I really want to make this a reality and I could use all the help I can get (setting up the website, typing the articles (I’m very slow in typing Arabic), or even helping with suggesting topics, writing, reviewing and putting the content together).</li></ol><h3>Mobile Apps:&nbsp;<span style="color: black; font-family: &quot;lato&quot;; font-size: 18px; font-weight: normal; line-height: 28px; text-align: justify;">I</span><span style="color: black; font-family: &quot;lato&quot;; font-size: 18px; font-weight: normal; line-height: 28px; text-align: justify;"> don’t have the business plan ready for these apps but I would very much like to be involved or co-found any of them. Let me know if you find them interesting.</span></h3><ol><li>A mobile app that detects the level of noise in the environment and automatically mute/reinstate the mobile phone. This adds a touch of intelligence to your mobile and is really useful in cases where you are, for instance, in a meeting or a lecture. You don't want to be disturbed but forget to put your mobile on the silence mode. The app periodically senses the level of noise, estimates where you are and adjusts the sound accordingly.<br /><br /></li><li>A mobile app that switches between playlists according to the place and time of day: the songs you enjoy listening to in the morning are most likely different from those you listen to during your walk in the afternoon. And those are most likely different from the ones you listen to while cooking or running. A mobile app that detects your current activity and combines it with the time of the day to recommend the next song or to switch to appropriate playlist is potentially useful. (This idea is inspired by a chat with my friend Yun-Gyung Cheong).</li></ol><h3 style="text-align: left;">Updates:</h3><div>15-07-2016: Together with a friend we started working on point 3 in the Misc. category: a website in arabic to educate people about the latest trends in machine learning, data mining, and artificial intelligence. We named it ArLore and you can find it here:&nbsp;<a href="http://arlore.com/">http://arlore.com/</a>.</div></div>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-9023750043270863890.post-75115937875686127532016-04-02T12:01:00.001-07:002016-08-28T04:12:15.668-07:00Games as a testbed for research - Why?<div dir="ltr" style="text-align: left;" trbidi="on"><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">People usually ask me about my research, when I say I'm doing research on computer games, I can feel their disapproval (though no one has actually express it out load). I can totally understand their reaction; I'm not a game developer so I'm not really making games, I'm not doing pure Artificial Intelligence (AI) so I'm actually contributing to making existing games any better and I'm not working for the industry so my work, so far, has no direct tangible influence.</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">I have actually been thinking about these issues for a while now and here is my attempt to clear this misunderstanding and clarify why what I'm doing is really interesting and more people should do it.</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">I have been working for a while (more than five years! time really flies fast) on player experience modeling (PEM) and procedural content generation (PCG), trying to come up with ways to improve and connect both. So far, I have made a progress, but it still fascinates me how little we know about human decision making and the unique ways in which people interact with digital media on one hand, and the sophistication of the process of creating games, on the other hand.</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">Creating games to me is very much like writing a novel. Almost everyone can write, but not everyone can come up with something interesting that others would like to read, and few can write something that appeals to a wide range of audience (something like the Harry Potter novel).</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">Understanding how human come up with a good story is hard, and building a program that can imitate this process is even harder (it would have been already done if it is not). Same applies for creating games. The exception is, if you want to make a good game, you can't rely on the imagination of the reader to setup the stage, you should master creating every aspect of it. Unlike novelist, game designers don't only create the story behind the game but they should also craft its visual artifacts, music, and mechanics, and that is why game creation is interesting: it combines so many creative processes. This is exactly why I personally think games are interesting as a testbed.</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">It has always fascinates me how people come up with great ideas and what inspires these remarkable creations. Take for instance the Harry Potter novel, do you think a computer could one day come up with something similar? I really think it is very unlikely, I actually even believe there are very few humans who can write something similar. I particularly chose Harry Potter because it is a fantasy, it is not something we experienced, seen or even imagined, and it is not something we can create with a little bit of extra effort. It took J. K. Rowling about five years to write the skeleton of the story, a process that fused life experience, great imagination and powerful writing skills. Though what actually inspired the story and the characters remains, at least to me, a big mystery.</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">Research has so far treated human as Gods, building machines with the sole purpose of imitating humans, but can't we take this one step further. Can't we make machine more spontaneous, more creative, more interestingly unpredictable. This requires not only imitation, but also improvisation, going beyond what you learned towards exploring the unknown. (I know some people will be freaked out by this, as it seems like I'm talking about the rise of robots, but this is not really what I'm aiming for. &nbsp;What I'm talking about is a system that can understand human and effectively collaborate with her. A system with which you can share your thoughts and actively wait for inspirations. A system to which you say "surprise me" and be prepared to be surprised (in a good way :-))).</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">So, one of the questions I'm interested in finding an answer to is: can computers, one day, surpass humans in creating novel ideas? There have been quite a lot of success in understanding how humans perform relatively simpler activities such as vision and speech (especially recently with the huge success of deep neural network), but we are still far behind when it comes to understanding the more fundamental cognitive process such as thinking, decision making, emotions, creativity and their relationships.</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">Games have been the focus of attention for so many people because, let's face it, people like playing game and companies like making money. This is however has so far been a motivation for making better games: games designed by humans with the help of AI. AI is usually employed to make the game design process easier (generation of crowds, making believable non-player characters, or even adjusting the difficulty of the game so that you will play more) or to automate tasks such as planning and path finding.&nbsp;</span><br /><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.2px; line-height: 18.48px;" /><span style="background-color: white; color: #222222; font-family: &quot;arial&quot; , &quot;tahoma&quot; , &quot;helvetica&quot; , &quot;freesans&quot; , sans-serif; font-size: 13.2px; line-height: 18.48px;">Recently, there has also been some interesting work on artificial creativity and how we can teach computers to search for novelty. The problem domain however is still limited and so is the space of actions. &nbsp;Games on the other hand are worlds widely open for imagination, creativity and understanding human behaviour. I believe we are still taking our very first steps towards understanding these factors and it will take us a while before we grasp some solid knowledge about them. But for now, we have an interesting medium and plenty of unanswered questions, a great setup to start digging in.</span></div>Unknownnoreply@blogger.com0