Question: I just met a terminology called "embedding" in a paper regarding deep learning. The context is "multi-modal embedding"

My guess: embedding of something is extract some feature of sth,to form a vector.

I couldn't get the explicit meaning for this terminology and that stops me from fully understanding the author's idea and model mechanism

I check the dictionary and search on line,but the explanation is based more on the real life meaning rather than meaning as a machine learning terminology.

And that raise a more generalized and frequently met question, when you find some machine learning terminology/word that you can't understand well, where can you get the solution, some specific way to google? join a machine learning group? raise a question in stack exchange?

Answer: 
**For me embedding is used to represent big sparse matrix into smaller dimensions, where each dimension(feature) represent a meaningful association with other elements in the embedding matrix.**

Consider an example of NLP. Where each sentence broken down into words(also called token). Such set of different words make a vocabulary for NLP. Generally vocabulary have millions of words. All such words can be uniquely represented as OneHotEncoding.

> 
> **Demerits of OneHotEncoding representation of words:**
> 
> 
> 1. In case of large vocabulary, OneHotEncoding representation needs a
>  big chunk of memory and computationally become very expensive.
> 2. OneHotEncoding is used to represent categorical values, where each entity is 
>  independent to other one, whereas words in vocabulary represent some association in 
>  terms of similar meanings or in some other way. OneHotEncoding not utilizing that 
>  capability for NLP.
> 
> 
> 

In order to overcome both the issues, we use word Embedding, where each word represented in lesser dimension, where each dimension represent some sort of features and hence each dimension will have some values.
As well known, machine only identify 0 and 1. Therefore, we, for an instance, "encode" characters and symbols with ASCII codes. 0 & 1 can only code two characters. To make sure the code is unique for all characters, we have to use a series number to code them. The hard ware experienced 8, 16, 32, and 64 bits (now 64 bits is most popular).

Similarly, in my understanding, embedding is to convert non-digital inputs in a preset order, like words, videos, images, etc. into vectors. These vectors can be used to machine learning easily. The dimension of metrics depends on the features of objects. Few features would result in low dimension, vice versa.

For an instance, we would recommend movies to users. If users have only one feature, let's say UserID, and movies only has one feature, movie name. We can build up a matrix with UserID as row, and movie name as columns. If a user watched some movies, those intersection would be 1, otherwise would be 0.

```
       | movie1 | movie2 | movie3 | movie 4 | ... | movie n |
user1  |   1    |   0    |   0    |    1    | ... |    0    |
user2  |   0    |   0    |   0    |    0    | ... |    1    |
 ...   |  ...   |  ...   |  ...   |   ...   | ... |   ...   |
userm  |   1    |   1    |   0    |    0    | ... |    0    |

```

Above is a m X n matrix. Each row represents one user. Thus, for user1, we have a vector (1 0 0 1 ... 0), user2 (0 0 0 0 ... 1), similarly for the rest of users. If the movie has only name without any further features, it is hard for machine to learn and train. Now, if we arrange the movies from left to right based on the suitable age group, we then can recommend movie2 and 3 to user1.

Based on above example, we can classify the movies in different features (let's say t features), like animated cartoon, action movie, war movie, horror movie, etc. We can build a m X n X t matrix. Based on the watch history, machine can classify a user's watched movies into different group and recommend similar movies.