Greetings! Welcome back to the deep learning course. It's been almost a month since we began and so far you've made great progress in the field of artificial neural networks for general data. And particularly, you've studied a lot of advanced architectures for vision. You've trained your crucial neural networks to classify images. You also studied how to perform more advanced stuff based on the images. However all those problems lie in the domain of supervised learning. It's where you have some kind of source data, some features, and you have reference answers for those features, whether they are classes like cats or dog or some continuous value like, say, if you give it a person and it predicts the salary it gets hourly, he or she gets hourly, sorry. Unsupervised learning, that we're going to now; however, has no access to this target variable and essentially has a more general, less defined task of kind of explaining the data, finding the instruction. So if supervised learning finds you a boundary between cats and dogs, unsupervised learning takes unlabeled pictures of cats and dogs being sent to other, well Kaggle and tries to find whether there are some maybe clusters or some groups that fit the definition of one object in this data. It tries to maybe compress the data. It tries to find some good feature representation that is useful for other problems. Of course, finding some hidden section in the data that is well defined as a mathematical problem as it would be for example for image classification, not running any mapping. Well, in fact you do, but it's not clear which mapping is better and which is worse. So there's no differentiation criterion and there are many unsupervised methods that cover one or the other approach to what's better and what's worse. Basically, the unsupervised leaning methods are better studied in the way that they help you solve problems and each problem is solved with a particular branch of unsupervised learning methods. Today, we're going to study a lot of them, but let's quickly recap what problems can be solved by this kind of hidden structure finding. For example, imagine you're working with raw data on Kaggle, so there is yet another competition that makes you work with images whether cats dogs or satellite images or maybe medical scans or maybe sound data. And you're usually given this data in a form of if it's an image or pixels or maybe frequency series if it's sound data. What you actually want to do with this data is to make some kind of high level decision, say, if it is an image, you may want to classify it or maybe detect objects on it. If it's a sound, you may want to define genre or maybe give some recommendations to people who listen to this particular music if it's music sound. And generally, those tasks are better solved with a droll piece of data, but some higher level representation, which is usually learned by your supervised neural networks. But here's the catch, you see, you usually get only scarce amount of data within your context which is labeled, but, so maybe if you're solving a general classification or maybe if you're trying to recommend, there's only so much music tracks that are available for recommendation that your server knows about. But there is tonnes of unlabeled music out there. You can literally download hundreds of mp3s, maybe it's of questionable legality, but you can download gigabytes of music. For example, if you want to take a lot of image data, maybe gigabytes of human faces and transfer it over the web. What you want to do is instead of transferring the raw pieces you want to maybe find some compressed representations, say, a hundred or two hundred float values that describe a face, compress on the face region of this representation, transfer it over the web and then decompress the course in the faces. This is actually possible due to the fact that image data is very redundant, so even if you as a human were not given the entire image, if there was some noise or maybe some pixels were missing, you would easily understand what was there in place of the missing pixels. You want your newsletter to do the same, to find this optimal representation that does not have this redundancy so that you can spend as little information as possible. Unsupervised learning is also widely used in the domain of image retrieval or any retrieval basically. For those of you who have heard this word for the first time, image retrieval is the thing that search companies do. So Google does it, Yandex does it. And retrieval is basically when the user enters you a query and you want to reply with a lot of documents or images that match this query. So you mean, you search for, say, a cat that sat on the mat and you want to filter out all the images in the database that don't contain such cat and only give maybe the response of top 10 cats that are sitting on the mat. Trust me, recent increase in the quality of image search for example is due to a large part of success of deep learning applied to it and there is some kind of representation learning we're going to study later this week that is at play here. Finally, you could use unsupervised learning when you try to generate new data. This is kind of a reverse of the problem you have solved last week. So previously, you wanted to process a cat's image into a label, now you get a label only when no data at all if you want to narrate a cat an image that resembles the cat maybe that is indistinguishable from actual images. This can also be done with some unsupervised learning methods that we are going to cover. Now finally, there is the exploratory data analysis. This is the least defined of the least defined methods here because or the problems if you wish because here you don't actually want to build an algorithm so much as you want to look into the data and find whether there is some pattern there. This is especially useful if the data is low level, for example, you have a lot of brain scans maybe thousands and you have no time to actually see all of them to process all the information manually, instead you want to use data analysis tricks to find whether there is maybe some particular pattern there that you may exploit for your problem, say, medical diagnosis.