Great lecture and incredibly clear slides. Please consider adding English translation. I am going through the video and trying to build my ideas by looking at the slides without understanding the language. Super great work just need to be debugged in English. Riyadh
If you don't understand something in the slides maybe I can explain it to you. I can understand chinese so I could translate what he said about a slide if you had a question!
Great explanation to CNN. One of the best out there. However, I would like to understand how the number of parameters for each filter in the second convolution is 225 when there are 50 3X3 filters. Thank you
No matter how many filters in the second layer, the number of parameter is depended on the output from the first layer. The output from first layer is a matrix of 25*3*3. So the parameters of second convolution is 25*3*3=225.
In this case, Keras ignores one column and one row by default, so the output is 5 x 5. If you don’t want that, you can add “ border_mode='same' ” in MaxPooling, then Keras will pad your input, and you will get 6 x 6.
The video is just the recording of my lecture at National Taiwan University. Sorry that there is little chance that I will teach in English in the near future. Below are the slides of this lecture. Anyone is welcome to use them to produce an English version. speech.ee.ntu.edu.tw/~tlkagk/slide/CNN%20(v2).pptx
我想知道 flaten 后的 vector 是什么dimension 呢?比如说,我的image 是 100x200 pixel (gray scale), 经过一个convolutional layer (5 个 7x7 filters)之后,就会有5 个·filtered 的 94 x194 image...再经过一个subsampling layer with factor 2 (I mean maxpooling), 我就会有 5 个 47x97 的 Images, 如果把这些images 做flattening, 那代表我有 22795x1 (=5x47x97) 的vector 吗?....... 如果把这个vector 放进去fully-connected NN....那不就很麻烦吗 ?(如果一开始就用neural network, 我的input vector 才 20000x1)..而且,我的例子只有一个 convolution layer....如果layer 的filter 变多了 (比如说 12 个), 那。。。我的input vector 不就很大了吗?? 总结: 1. What's the dimension of the flattened vector for fully-connected neural network (FCNN) 2. When the image size is big and when the number of filters are large, the number of the feature images (before the FCNN) are very large. As a results, the dimension of the input vector for the FCNN will be become very large. Why don't we use the FCNN at the beginning ? 如果我有理解错误,希望你可以解释一下..谢谢
謝謝老師能公開這麼棒的課程,造福非臺大的學生以及想學習但苦無資源的網友們,有李老師和您的研究團隊在,必定能對台灣AI產業發展以及人才的訓練帶來極好的成果,祝福你們~
应该是对整个中文圈了...
李老师这节课真的让我理解了CNN,之前听课程老师讲的时候一知半解的。非常感谢李老师分享的课程
讲的真好, 从1看到10, 感受颇深, 还需要重新看3遍, 不仅讲的明白, 重要的是老师自己有自己的理解, 对了解之后的应用非常具有指导意义!
ppt做的真的用心,中文最好的入门课程了,大陆学生的福音,非常感谢老师
I dont understand chinese however this is probably the clearest explanation on youtube
yes very clearly explained
You are right, if you understand Chinese, you will know how wonderful it is.
666666666
hahaha :D
感谢老师做的贡献! 是我见过上课最认真讲的最好的老师了!
講的太清楚了,看過最簡潔有力的課程
谢谢李老师,非常感谢!解决了关于CNN的一些疑惑,并且每次快听不下去的时候就听到老师讲到有趣的地方。课程节奏很好
这应该是我目前为止看到的最好的中文Deep learning课程
大陆现在machine learning虽然很火,但是从业人员还不是很多,资源比较有限。。。
大陆好老师很多呀,,,只是做网课做的好的很少,一般不会花精力把教学视频和课程作业整理到很适合外校的人看。一般只提供课件和作业
应该说从业人员也不少,就是教材资源不行
英文課程也沒講這麼清楚。這個投影片根本太神。
大陆没有老师讲,而且做的比其他英文版的都好太多。
讲得真的太好了,会把老师的课程推荐给其他想要学习相关知识的小伙伴!
吹爆李老师这堂课!生动形象地解释了CNN的工作原理
CNN架构的设计及原因,以及如何改进,存乎一心,讲得太棒了!
讲得非常清楚,这是目前最好的中文深度学习视频。大陆网站有转载
李老师讲的太棒啦。很多都用例子生动形象地把CNN讲清楚了。对我这样厌倦看数学公式的现在居然觉得非常有意思
讲的非常清晰,对于一知半解的人来说,可以很快深入了解。赞一个。而且中文使得很多国人有了更便捷的学习资料。
看了这么久youtube,第一次评论,真的讲得很清楚,老师真用心,感谢🙏
the whole cnn 7:39
convolution vs fully connected: 17:56
maxpooling 23:41
cnn in keras 27:53
waht does CNN learn 35:50
学习很多,期待教授出更多的深度学习和机器视觉相关的教程,谢谢!
CNN是在简化DNN,模型比DNN更简单。
property1: 看image的一部分,就可以发现某些pattern了 (convolutional layer)
property2: pattern会出现在图片的不同区域 (convolutional layer)
property3: subsampling, 把一张image的奇数行,偶数列拿掉,不会影响人对这张image的理解 (max pooling)
每一个filter 等同于fully connected layer 里的一个neural
每一个filter里面的值是什么,是自动学出来的,而不是通过人工赋值得到的。
言简意赅
这个讲得真的太棒了! 很推荐很推荐,图片展示 代码展示都讲得超级细致
谢谢老师,讲的太棒了。课件是我看到做得最好的。
世界最顶级的人工智能老师。
one of the best intuitive explanation of cnn. Thanks!
Thanks for the putting in English captions. Very helpful.
这节CNN的课收颇丰=、=真的很惊喜!记了足足两份笔记和思考:
sakura-gh.github.io/ML-notes/ML-notes-html/11_Convolutional-Neural-Network-part1.html
sakura-gh.github.io/ML-notes/ML-notes-html/12_Convolutional-Neural-Network-part2.html
总目录:github.com/Sakura-gh/ML-notes
讲的真的太好了,非常用心,respect!
忍不住赞一下,试想如果我的导师是像李老师这样的,又或者我在一年前看到您的视频......唉,想都不敢想
感谢老师的讲解,受益匪浅,希望老师还可以出更好的视频课。
Great lecture and incredibly clear slides. Please consider adding English translation. I am going through the video and trying to build my ideas by looking at the slides without understanding the language. Super great work just need to be debugged in English.
Riyadh
If you don't understand something in the slides maybe I can explain it to you. I can understand chinese so I could translate what he said about a slide if you had a question!
Can you take the hole video and make a translation of it?
Hello Bo,
I do agree with David. The whole translation would be fantastic.
Hi, Sorry I did not say I would translate the video so I won't be doing that.
haha maybe someday we'll use deep learning to generate subtitles of these videos and translate them
講的超清楚,感覺老師充滿了熱情!!
讲的真好啊 早看到这个可以节省大量时间
讲这么好,而且还免费放youtube, 真不知道怎么夸李老师了。只能说牛人的境界和凡人不一样
謝謝老師 我男友他完全不懂中文 但看到我在學這個 (我放到電視機上看) 有時也會跟著看 也說是非常好的課程 (他工作就是做machine learning分析聲音的)
Your video is very useful for me. Thanks alot sir.
老師真的太用心了,大推!
16:13 老师回答的问题,是老师另一份video里面的spatial transform那一节有讲!!!
超级清楚的ML的中文课。
分析最后一层网络没有学习出一个数字的样子的原因应该是模型是考虑到图片的平移不变性的,也就是说训练的时候如果每个数字位于图片的位置都是相同的,那么分析最后一层的时候应该能得到数字
老師教學真是用心 感謝老師
這篇講CNN真的太神了,各種秒懂!
Great explanation to CNN. One of the best out there. However, I would like to understand how the number of parameters for each filter in the second convolution is 225 when there are 50 3X3 filters. Thank you
No matter how many filters in the second layer, the number of parameter is depended on the output from the first layer. The output from first layer is a matrix of 25*3*3. So the parameters of second convolution is 25*3*3=225.
王彥博 Oh okay. Thank you.
老師您好:
我看到目前為止有幾個問題想請教一下老師
Q1:我發現在影片第32:29的部分,每次convolution時,使用的filter數目似乎是不一樣的
(投影片上,第一次convolution是使用了25個filter,而第二次convolution則是使用了
50個filter)
原因是因為,對應到老師您之前提過的兩點(如果我沒有誤會意思的話)
1. 每個filter即為一個神經元
2. 每一隱藏層使用的神經元數目是經過 試誤法 決定的
因此25個filter與50個filter都是經由試誤法所決定的
請問老師是這個樣子嗎?
Q2:我之前在網路上有聽過以下這麼一句話,
【每次做convolution後,會把一張圖片變成一張 長寬更小,高度更高的新圖片】
想請問老師,假設第一次convolution使用25個filter,第2次使用50個filter
那這句話所說的
"新圖片",所指的應該是 feature map,而
"高度更高",指的是feature map高度從25變50了
(若輸入為彩色圖片,新的feature map高度仍為50,差別只是使用的filter從matrix變成cube)
並且,一般來說,CNN的每一層的神經元(filter)在進入fully connected network之前,
數目應為遞增
請問老師是這個樣子嗎?
Q3:請問老師是否有什麼方法可以判斷convolution和max pooling
所輸出給fully connected network的data是夠好的呢?
(藉以判斷需要做幾次convolution和max pooling)
最後感謝老師您的回答與精彩的上課影片
Q1: 是的,就是試誤法決定的
Q2: 你說得都沒錯。一般會讓 filter 越來越多,因為底層的 filter 代表基本的 pattern (顏色、幾何形狀等等)、上層的 filter 代表比較抽象的 pattern (貓、狗等等)
Q3: 這個問題很難回答 …… 我不知道是否已有人有可以根據 filter output 判斷所需層數的方法,有的話請讓我知道。需要幾次 pooling ,取決於輸入圖片的大小,pool 次數太少給 fully-connected layer 的圖片會太大,pool 次數太多圖片中的 object 間的幾何關係會喪失;你會希望有足夠次數的 conv 讓你在訓練資料上正確率夠高,但又不能多到在測試資料上會 overfitting ;最後在考慮手上運算資源、和一些試誤後,你才能決定要用的 conv + polling 次數
了解,感謝老師
这PPT做的真的是用心,谢谢李老师!
請問我們實際使用 keras 訓練 network 時,我們實際上並沒有真的具規畫每個 Neuron 是偵測什麼圖案對吧? 那我們怎麼知道實際上個別 Neuron 是在做些什麼事情(例如偵測鳥嘴、翅膀)?
非常感谢老师的讲解和精美制作。本节中想问两个问题,:
question1:比如cubic filter是3*3*n ;n中的每一层3*3里面的参数都一样吗?感觉应该是,但是不敢完全确定...
question2:对于RGB图像的话,相当于第一次卷积的时候是3个channel(打个不恰当的比方:相当于初始状态是类似于3个filter进行过一次卷积后的new image),再之后的卷积过程还是根据我的filter个数n来确定每个像素有n个值。这样的理解正确吗?
讲的非常的好!!!!!!只是对内积的说法,和我理解的不一样。
李老师讲的非常好,非常受益
最近, 重溫老師的video, 還是啟發很多。。尤其是 What Does CNN learn, 那幾張slides.....如獲至寶。。感恩老師
有一個問題, 困擾著我 , 在 Deep Style, 老師提到 Feature Map 的Correlation 可以學到 style image 的 '紋路及色彩' ..我看原始的paper, 也只是帶一下。。。.不曉得有沒有那邊的解釋, 或原理, 來說明 Feature map correlation 可以 extract texture....謝謝老師
讲的太好了,受益良多,谢谢老师!
多谢老师!请问一下,35分钟左右。为什么第一层(从1×28×28变成25×26×26的时候)的参数个数是9?而不是25×9?我理解的是每一个filter是3×3,一共25个filter,所以一共9×25个参数,不知道我这理解哪里有问题?
问题是:老师讲解的时候说的是“每一个filter”的参数个数。。。。
你的理解是对的,可是没仔细看老师的slide
非常感谢
17分钟,RGB三个channel,应该是27个值和27个值内积吧,不是9和9
老师 我想请教一下在第31分钟到32分钟,第一次convolution中用了25个filter第二次convolution中用了50个这其中是必须是两倍的关系还是说第二次的filter的个数可以是随机的
How can we come up with parameters? Is it specific to the object we want to detect?
清晰明瞭,實在非常好!
49:37传送门: th-cam.com/video/M2IebCN9Ht4/w-d-xo.html
super clear! thx for sharing
老師不好意思,針對"what does CNN learn"這個部分,我的問題有點多!
請問老師𝑥(上標∗)=𝑎𝑟𝑔max(下標𝑥)𝑎(上標𝑘)(gradient ascent)
(1.)這個部分是一直去改我們的input x ,使得x通過filter以後得到一個最大值嗎?
(2.)請問這個x是部份的image還是整個image呢?
(3.)假設是去改input的x,那麼這個x是怎麼去做改變的呢?(如何implement?)
(4.)內容中提到改(訓練)的不是參數,小弟愚鈍,沒有辦法了解實際上到底是learn了什麼,然後使得CNN模型在什麼地方有所改變,而可以去辨識一個新的input呢? 看起來似乎不是去改變filter?
讲的实在太棒了!受益匪浅!
感谢师兄推荐这么好的课程:-)
請問 35:35 那邊, 為何 50*11*11的matrix 經過 maxpooling後, 會變成 50*5*5?(11*11 奇數邊)
還有我想問如果convolution有做zero padding和沒做 會有什麼差別嗎
謝謝教授,受益良多
best Chinese ML lecture ever !!
第二次maxpooling之后为什么是50*5*5而不是50*6*6
请问李老师 13:40的时候关于Property2的讲述不太明白。您举的例子:左上方和左下方相同的Pattern,filter之后都是3.但是我联想到filter之后4*4的Feature Map中,第一行的第二列和第四列值都为-1,但是其在原始6*6图像中相对应的Pattern确不一样。是我哪里理解有误区吗,请李老师详细指导一下,谢谢
这视频讲得真好,非常感谢!
老师您好,这节课中你说到的第k个filter的输出是一个11*11的matrix。为什么不是25*11*11的一个tensor。我觉得第二个卷积层第k个filter应该是25*11*11 size 的filter才对呀。那卷积完输出不是应该是25*11*11的tensor吗?
請問26:45秒, 老師提到"第二層的filter會考慮深度", 這代表第二層的filter其實也是立方體嗎?
如果是的話, 第二層filter的output, 也是立方體囉?
是,取決於你設定第二層的filter深度多少。CNN本身是個空間分割的NN,所以旋積池化層的輸入出就是個立體的矩陣。
深入浅出,听得很开心
我大学要是碰到这样的老师就好了
請問李老師,用gradient ascent去回推input x使得第k個filter的activation最大時,這邊有什麼公式或是參考資料可以幫助理解的嗎?目前我還搞不清楚到底時怎麼回推的,謝謝!!
thrilled to find this video!!!!!! thank you!!!!!! just think you!!!!!!!!
讲得好棒,尤其是cnn for text最后部分!
Lecture 说得太好啦,不过 15:50 说到XX最近有写一篇paper,用于处理数据之间Scale的问题,这个XX是谁? paper是哪个,能告诉我一下吗~~
我指的是這篇 paper
arxiv.org/pdf/1506.02025.pdf
十分感谢~
@@HungyiLeeNTU 感謝老師
有個問題想請教老師一下:
32:30 的地方在計算第二層convolution的parameters共有幾個,但簡報上面寫的還是"How many parameters for each filter?",請問每個filter的參數是不是仍然是9,只不過是因為有25個filter,才會變225呢?
很精彩的讲述,非常感谢!
謝謝老師
伟大的李老师!
视频33:07的地方,为什么flatten之后是1250,明明第二层的convolution输入的是一个cubic,那么最后flatten输出vector的时候应该要考虑那个cubic吧
因為在 flatten 前的 cubic size 是 50 x 5 x 5 ,所以 flatten 後是 1250
我明白了,非常感谢老师的解答。
李宏毅 i think11*11 maxout shall be 6*6why 5*5 how to deal with 11 ?
In this case, Keras ignores one column and one row by default, so the output is 5 x 5. If you don’t want that, you can add “ border_mode='same' ” in MaxPooling, then Keras will pad your input, and you will get 6 x 6.
老师您好,这里我还有点疑问:
第二层的convolution输入的是一个cubic,尺寸是25*13*13,那么输出时应该输出50个cubic,且每个cubic的尺寸为25*11*11。max pooling后的就是50个25*5*5的cubic。那flatten后不应该就是50*25×5*5吗?
超级赞啊~清晰易懂!
請問李老師,若CNN的input 是彩色的圖像,有RGB三個channel,我知道第一層的conv. layer,每一個filter本身的深度/層數是3,到了第二層的conv. layer時,請問:每一個filter本身的深度/層數是多少?(仍有RGB channel 之分嗎 ?)。謝謝。
第二層沒有 RGB 分別 因為第一層的每個內積裡就有一部分的 R, 一部分 G, 一部分 B. 第二層每個 filter 的 深度是第一層 filter 的數目(影片裡面是 25)
The video is just the recording of my lecture at National Taiwan University. Sorry that there is little chance that I will teach in English in the near future.
Below are the slides of this lecture. Anyone is welcome to use them to produce an English version.
speech.ee.ntu.edu.tw/~tlkagk/slide/CNN%20(v2).pptx
Awesome lecture, thank you so much!!!
thank you very much,Mr LI
forever to support you
💗,taiwan number one了
什么问题是可以用CNN呢?
符合三个property的问题比较适合cnn
deep dream 的例子怪怪的,光是誇大化 (exaggeration) 我不認為就會讓電腦產生出動物的圖像,感覺 deep dream應該有餵一些動物的 image,讓電腦學習了一些跟動物有關的風格才有可能做到吧?
你想得沒錯。一般 Deep Dream 用的都是一個已經在大量影像上訓練好的 CNN ,所以 CNN 是看過動物的圖片的
老師好,
在PPT34頁地方有個小Typo
Update 那邊的箭頭是不是畫反向了呢?
謝謝老師提供資源給我們學習 :)
老师
讲的太棒啦
請問老師9分至10分半,filter 內的權重值是如何學習出來的
老师你好,你说的关于 max pooling求导的视频是哪个呢?如果有的话请告诉我,谢谢
I can guess that everything is explained in a very detailed manner......Bt problem is...It is not in English...Please translate it...Thank You
這個教材編排真的很棒
我有个小问题:
在convolution 的时候,是不是不一定要经过sigmoid function 的?
我看andrew ng 的deep learning, 他是有用sigmoid 算 convolved 的imgae. (而且, 在 convolved 的image 也会加上bias 的)。。
Max pooling 本身就有 non-linear 的效果,所以有 max pooling 就可以不要 activation function,但想加也可以
明白了。。谢谢
请问老师,CNN要是加入activation function是放在哪里呢?是所有filter卷积完得到的feature map丢进sigmoid function后得到新的feature map然后再pooling吗?
如果使用的是 max pooling 的話,activation function 加在max pooling前後都是可以的,不會影響結果 (activation function 不會改變最大的 filter輸出是哪一個)。
感谢老师!
老師講解得太精彩啦!!
PPT 第24页有个typo:black/weight -> black/white.
你說得沒錯,謝謝你 :)
老師您好,請問一下以影片33:06為例子的話,當做完Flatten後會有1250維的vector,將他丟進fully connected network理面,請問這1250維的vector只會是一個hidden layer嗎??
我的理解是這是 fully connected network 的 input
谁可以指教下,那么filter是怎么学出来的?有链接吗?谢谢
我想知道 flaten 后的 vector 是什么dimension 呢?比如说,我的image 是 100x200 pixel (gray scale), 经过一个convolutional layer (5 个 7x7 filters)之后,就会有5 个·filtered 的 94 x194 image...再经过一个subsampling layer with factor 2 (I mean maxpooling), 我就会有 5 个 47x97 的 Images, 如果把这些images 做flattening, 那代表我有 22795x1 (=5x47x97) 的vector 吗?.......
如果把这个vector 放进去fully-connected NN....那不就很麻烦吗 ?(如果一开始就用neural network, 我的input vector 才 20000x1)..而且,我的例子只有一个 convolution layer....如果layer 的filter 变多了 (比如说 12 个), 那。。。我的input vector 不就很大了吗??
总结:
1. What's the dimension of the flattened vector for fully-connected neural network (FCNN)
2. When the image size is big and when the number of filters are large, the number of the feature images (before the FCNN) are very large. As a results, the dimension of the input vector for the FCNN will be become very large. Why don't we use the FCNN at the beginning ?
如果我有理解错误,希望你可以解释一下..谢谢
在 flatten 之前會進行足夠次數的 pooling ,以確保進入 flatten 前的 vector 不會太大。例如 VGG-16 的 input 是 224 x 224 的 image ,但 flatten 前已經將 image 縮減為 7 x 7 的大小
那是不是说filters 的数量其实不能太大,要用足够的max pooling 去缩小 image size 。。 因为一开始我以为convolution 和max pooling 可以把image 的information condense, 所以就用了很多filters (in convolution layer), 但是最后发现当convolution layer 的filters很多时,进入FFCN 的vector 就会很大,感觉好像有点contradiction....
【本来想把feature vector 缩小,但却因为filters 很多,导致进入FFCN 的vector 却变大了】。。
我的意思是,如果是简单的image (小的image), 我们其实就不需要 convolution layer....有了convolution layer 只会把问题变地更复杂,更难处理...
我想问问有没有一些关于 convolution and max-pooling layers 的backpropagation 的资料可以参考的呢?我想自己写coding 之类的....
谢谢,感激不尽
其實我也沒有看過 CNN 在 backpropagation 上特別清楚的 tutorial (或許是因為多數人現在都用 tensorflow, theano 之類的 framework 了),如果有其他人有看過清楚的 tutorial 的話歡迎提供 :)
我發現 Mark Chang 和陳縕儂老師在 CNN backpropagation 的部分講得蠻清楚的
www.csie.ntu.edu.tw/~yvchen/f105-adl/doc/161103_ConvolutionalNN.pdf
李宏毅 oh...谢谢...太棒了...
谢谢老师!受益匪浅
請問神龍,Max pooling一定要四個四個一組嗎?
I don't speak chinese but understood whole video
can you pls upload the english version. Thanks in adv.
喜欢这个千年眼老师