A picture is a 3D tensor (width, height, color channels) Number of weights = input_size x number_of_neurons = (100 * 100 * 3) * 1000 Too many parameters → Overfitting Conclusion: Image processing does not “require” fully connected networks ****9:20** We can identify something using its critical features** One can see that this is a bird when they notice the beak, the feet, and the wings. → Neural network doesn’t need the whole image ****11:00** Receptive Field** For a single neuron in a convolutional layer, the local receptive field is the small region of the input image (or previous layer) that this neuron processes. For example, if the convolutional kernel size is 3×3, the local receptive field of a neuron in that layer is a 3×3 region of the input. **15:44 Classic Receptive Field Arrangement Parameters:** 1. kernel_size: The height * width of the field is called the kernel size. (PyTorch Conv2D 打 (kernel_size=3) 會給你 3 x 3的kernel) 2. stride: 從現在的field跳幾格會到下一個field Stride should be small. You want the fields to overlap, otherwise, you may risk missing important patterns 1. padding: The field may go out of bound, so you fill the area with 0s 21:30 **Same key features appearing in different receptive fields** We can let neurons from different receptive fields share parameters. Two neurons with the same receptive field would not share params. Every shared param is called a “**filter**” ****27:00** Receptive Field + Parameter Sharing = Convolutional Layer** Models that utilize convolutional layers are called “CNN”s ****29:00** CNN Explanation 2nd Version** ****34:00** Feature Map** Filter performs convolution with each field and generates a map of scores. ****38:30** Summary** ****40:00** Pooling** Decreasing the resolution will not change the object Objective: Decrease the amount of computation required. Max Pooling: Pick the largest member from a group of scores. Disadvantage: Not suitable for intricate images 目前運算資源夠用,Pooling可有可無 ****54:00** CNN can’t deal with scaling and rotation** 放大或旋轉一張圖它會無法辨認 → We need data augmentation (create new data by scaling and rotating existing images)
我是大陆来的。老师讲的比其他其他可能清楚,也解释我很多的疑问。 感谢老师
用AlphaGO没用pooling层这个例子来提醒大家不要盲目模仿各种火热的神经网络结构,要去思考使用一个模组的理由,这个引导太妙了
第一次听到这么清楚的对CNN的讲解
當建模時遇到問題,回來上點課,才發現解答都在這些基礎觀念中~~ 感謝老師
非本科系正在學AI相關,真的很感謝老師淺顯易懂的教學
一直以來都在負責firmware的人竟然也能看懂老師的解說,真的遇到大師了! 唯有大師級才能細細說明,娓娓道來!
很感謝老師仔細的講解,讓我能對於神經網路有更深的認識,影片內容十分精彩,過程中都不會有讓人有想睡的感覺。
這是一門以數學為工具的「實驗科學」❤
so clearly explained! I read many blogs today, and none of them explain CNN as brilliant as Prof Lee🥰
老师讲的好清楚声音也好棒!每次下饭的时候都会拿来看
新版講解更全面&清楚了
感謝老師的用心
偉大
這是我看過把CNN mode講的最清楚的了,好厲害
周五周六别人玩耍的时候赶紧补李老师的ML课💪!!
确实
随缘一搜竟然找到新鲜视频!! 感谢老师一直更新
回过头再听老师的课,犹有收益!
老师讲的实在是太好了,初中生都能听懂
The most magnificant and fantastic lecture ever.
感謝宏毅老師的無私教學與分享!真是獲益良多。
老師在 6:49 附近時講到,參數越多會增加 overfitting 的風險。但我看最近文獻指出,近年大部分 Neural networks 都是 Overparameterized,擁有比資料數據還多的參數,是否 overfitting 比較取決於 test 資料 與 training 資料的分布差異,而並不是越多參數就越容易 overfitting 。請問是這樣嗎?謝謝。
我覺得 test 資料 與 training 資料的分布差異所造成的在training表現好testing表現差的行為是mismatch 不算是overfitting. 參數越多會增加 overfitting 的風險的原因可以參考老師課程中的圖例,參數越多能表示的curve就越複雜,而當我們追求training loss越來越小的同時,等於是在將training data 去 "fit" 在curve 上面,這個model是客製化在training data上,所以到了testing時,結果反而不好了,所以才會說是"overfiting"。
我的淺見,有錯還請糾正
非常感谢李老师的讲解!
Really good speech!Thank you professor!
34:23 在这里我懂了PyTorch 的 conv2d 的 out_channel 原来就是filter(的数量)的意思
哈哈,一年后来重新温习!
老師是台灣最酷的男人 好暈喔
謝謝老師!!! 受益良多!!! 萬分感謝您
感謝老師製作的教學影片!!真的講解得太好了!!
老师,您好,有个地方想向您请教。在35分钟左右的例子里面,因为例子给的是一个1channel的黑白图片,所以在有64个Filter做convolution之后Channel变成了64个Channel,如果是一个RGB的3Channel的图片做同样的convolution,那得到的feature map的tensor应该是64*3=192个Channel吧?
我也有类似的疑惑...
我在这儿也有问题。不过我猜他是对3个channel的每个channel分别做内积然后相加得到一个数。之后再stride一下继续之前同样的操作。这样的话一个filter扫完一张rgb图片后就得到一个2维矩阵。64个不同的filter然后产生64个不同的2维矩阵。
@@zhouwang2123 你說的是對的,不論處裡的影像channel數是多少,經過一個filter作用後,輸出都是一個二維矩陣,也就是channel數 = 1。
Hello 請問宏毅老師有時間可以幫忙講解一下 3D CNN嗎?volumetric、multi-view,point-cloud都具體怎樣實現呢? 多謝!!
老師真的教得太好了 感動
太清楚了 我愛宏毅老師
将一个filter在图片滑动的过程,作为不同位置某一个pattern检测的解释会不会有点牵强?比如完全一致的鸟嘴分别在两个图片的左上方,右上方,虽然同一个filter将会得到同一个值a,但是提取得到的特征,flatten以后特征中a的位置并不一样呀?希望老师能解答。
我的理解是這樣,滑動只是一種容易理解的簡化表示, 實際上不是真的滑動,只是不同神經元的參數共享,神經元數量不變,網路架構還是一樣大,但參數量減少很多
讲得很清楚,终于明白CNN了哈哈哈哈开心
你才是我导师,讲得真好
李老师是神!👍
谢谢老师,讲得真好。完全听懂了
非常清楚地解释神经网络,很赞哦!期待有更多新的教学
39:20 請問 @HungyiLeeNTU 老師,從 Neuron Version Story 面向,一層 Convolutional Layer 有幾個 Neuron,能否如此問?
(如果我有說錯請告知,感謝)
一層 Convolutional Layer 有幾個 Neuron是超參數要自己定的,在實作上如果是用深度學習框架寫的話,就取決於你處裡的影像大小、kernel size、number of kernel 和stride。舉例:100x100的影像、kernel size = 3x3、number of kernel = 64( = 每一組神經元有幾個神經元)、stride = 1,則該層神經元數量 = (100-2)*(100-2)*64。(100-2)*(100-2)是receptive field的數量,和影像大小、kernel size、stride有關。
補充(這樣可能說得比較清楚):
1.每一個RF都有一組神經元守備(每一組神經元的神經元數量相同)
2.每一個神經元都是某一種pattern的detector
3.(不同RF對應的)不同組神經元內的同一次序(比如說都是第一顆神經元)的神經元偵測同一種pattern
4.一個filter偵測一種pattern
5.RF大小 = filter大小;RF數量 != filter數量,filter數量是自定的
6.一組神經元內神經元的數量 = filter的數量(by3.&4.)
總結:CNN內某一層有幾個神經元 =RF數量*一組神經元內的神經元數量(=filter數量)
赞赞赞,老师讲得太清楚了!
最大也是最重要的优点是讲的特别清楚且易懂。666666
看了十分钟就果断点了关注
41:49 的字幕似乎是mean pooling 被寫成min pooling?
是的,誰叫他們聽起來這麼像XD
有種感覺 會回到
釐清目的之下
找到的資料分析方法
好人一生平安
看完這段,直覺可以用先用隨機森林挑選重要特徵值(影像的某些區域),再代回神經網路
太爱李老师了
太精彩了
有點不同意pooling只是做subsampling,從數學的角度來看pooling做的應該是「用不等式來刻畫特徵」,如果沒有pooling就是用「等式來刻畫特徵」,有些問題用不等式來刻畫特徵會更容易一點~在alpha go的例子裡,似乎等式對局部的特徵描述更精細一點,不過只要不等式夠多,理論上也是行得通的。。。
另外alpha go的地方也有點不同意,終極版的alpha zero使用ML的方式不完全是分類問題,更接近函數擬合問題,擬合的是winning rate(勝率),而且私以為alpha系列最核心的地方是用MCTS來幫助決策,如果單純只用CNN來決策效果應該會差很多>
老师我有一个问题,一个6*6*3的图片经过一个3*3*3的 filter,stride为1 ,没有padding。卷积之后为一个4*4的图片,那请问老师这个4*4图片上的每一个值怎么计算?3个channel与filter内积了之后再相加吗?
就是把圖片 3*3*3 的範圍中的值跟 3*3*3 的 filter 做內積
@@HungyiLeeNTU 谢谢老师!
真的太清晰了 比mit哪个intro to dl还好上不少
A picture is a 3D tensor (width, height, color channels)
Number of weights = input_size x number_of_neurons
= (100 * 100 * 3) * 1000
Too many parameters → Overfitting
Conclusion: Image processing does not “require” fully connected networks
****9:20** We can identify something using its critical features**
One can see that this is a bird when they notice the beak, the feet, and the wings.
→ Neural network doesn’t need the whole image
****11:00** Receptive Field**
For a single neuron in a convolutional layer, the local receptive field is the small region of the input image (or previous layer) that this neuron processes. For example, if the convolutional kernel size is 3×3, the local receptive field of a neuron in that layer is a 3×3 region of the input.
**15:44 Classic Receptive Field Arrangement
Parameters:**
1. kernel_size: The height * width of the field is called the kernel size.
(PyTorch Conv2D 打 (kernel_size=3) 會給你 3 x 3的kernel)
2. stride: 從現在的field跳幾格會到下一個field
Stride should be small. You want the fields to overlap, otherwise, you may risk missing important patterns
1. padding: The field may go out of bound, so you fill the area with 0s
21:30 **Same key features appearing in different receptive fields**
We can let neurons from different receptive fields share parameters.
Two neurons with the same receptive field would not share params.
Every shared param is called a “**filter**”
****27:00** Receptive Field + Parameter Sharing = Convolutional Layer**
Models that utilize convolutional layers are called “CNN”s
****29:00** CNN Explanation 2nd Version**
****34:00** Feature Map**
Filter performs convolution with each field and generates a map of scores.
****38:30** Summary**
****40:00** Pooling**
Decreasing the resolution will not change the object
Objective: Decrease the amount of computation required.
Max Pooling: Pick the largest member from a group of scores.
Disadvantage: Not suitable for intricate images
目前運算資源夠用,Pooling可有可無
****54:00** CNN can’t deal with scaling and rotation**
放大或旋轉一張圖它會無法辨認 → We need data augmentation (create new data by scaling and rotating existing images)
谢谢教授!
請問老師,cross entropy 的介紹在哪一部影片中呢?謝謝您。
感谢老师!
守备区域,,李老师肯定很爱棒球
想听元老师通过数学讲OVERFITTING和模型弹性
讲的真好!👍
非常棒!
謝謝老師
neuron老師發的是英式發音
希望老师多来大陆举行技术论坛讲座
請問吳培元老師的課程有錄影嗎?
太强惹。。谢谢!
請問吳培元老師也有線上課程嗎
32:50 也有可能用 ZERO PADDING 補滿原本圖片的大小
厉害!要是听这个还听不明白就基本告别CNN了
请问老师是会随堂在TH-cam上直播嘛?
因為這學期修課人數多,怕教室坐不下,所以有一個給修課學生的隨堂直播,不過公開在YT 上的基本上就是我講的全部內容了,我沒有特別剪輯
@@HungyiLeeNTU 老师,有没有兴趣在大陆B站开个课呢,您在大陆特别受欢迎
@@HungyiLeeNTU 哇好的!!谢谢李老师💪
@@vomosnik4466 好像B站有同学搬运,不过不知道经过授权没
@@xinxinwang3700 应该没有授权吧,老师跟百度好像有个合作的课,但是用的paddle,并不想用paddle
感谢宏毅老师!所以kernel与filter是一个东西吗?
沒錯,kernel = convolutional kernel = filter = mask
@@laplaceha6700 牛逼!
喜欢8:52的图片
想问一下 李老师的pres是用什么做的呀?
直接用 powerpoint 做的
可以先pooling 再convolution 嗎?
可以啊 但是那个一般叫sub- sampling 在特征识别很常用
爲什麽是64個filter 不是3channle * 4 *4 = 48
filter數量是超參數,自己定的
Explain CNN with two ways!
通勤时候学习
這是什麼呢?🤔
通俗易懂
已按讚65次
為何稱作 Convolutional Nerual Network ? 😮和數學中的
Converlution
有何關聯呢 ? 😮
老师,我有个小问题,就是说如果channels=16,我们使用二维的卷积核怎么去卷积呢
老师很明白 佩服
其實我一直覺得我看到的是....一隻鳥(但我沒喝酒啊~我是不是有問題...XD)
簽
講得很好, 但感覺學ML還是聽英文較易懂!
有一天教官有事找李老師,
就問一個班上的同學說:李宏毅幾班...
同學想了一下回答說:逮金?
666
中国大陸应没有这样水準的视频
您上个ML的课都要扯上政治因素?
@@yichaozhang9295 哪裡來的政治因素?
上課就上課,學知識就學知識為何要這樣講。不光是大陸或者台灣,很多華人都可以一起分享喔。
牛啊牛啊,这都能扯
知道李沐吗
awesome!! ,我在查看《deeplearn》这本书中发现,作者说pooling层对Rotational invariance有积极作用,这是有可能的吗?😀
從不見李飛飛出來當網紅,真正高手不會是網紅,當然李老師講課內容還是很能吸引人的,對一些沒有基礎自學能力不好的學生我想這樣的課程應該也是有必要,尤其在台灣,我不是不尊重李老師,而是希望你如果能力足夠可以更加深入去理解Ai很核心的部分,或許也可以在Ai流程中有一點小名氣或做出一點點貢獻
那andrej karpathy怎麼解釋?誰說大師就不能在網路上分享教學,別笑死人了。