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的讲解
🎯 Key points for quick navigation:
00:00 *🧠 CNN 的基本概念與應用*
- 介紹卷積神經網路 (CNN) 的基本概念,專為影像處理設計,
- CNN 在影像分類的應用,透過固定大小的圖片進行分類分析,
- 強調 Network 架構設計的重要性及其對分類結果的影響。
02:21 *🎯 One-Hot Vector 與影像分類目標*
- 講解 One-Hot Vector 的概念及其在影像分類中的應用,
- 討論影像辨識系統如何處理多種類別的輸出,涵蓋數千至上萬類別,
- 使用 Cross Entropy 測量預測與真實分類的差距。
03:20 *🖼️ 影像作為模型輸入與數據結構*
- 影像在電腦中的表示形式為三維 Tensor (寬、高、色彩通道),
- 將影像 Tensor 拉直為向量以輸入至 Fully Connected Network,
- 討論高維向量對參數量與模型設計的影響。
06:22 *⚠️ 模型參數與 Overfitting 風險*
- Fully Connected Network 中參數過多的問題,增加模型靈活性但提高過擬合風險,
- 解釋影像特性對參數優化的需求,
- 強調針對影像特性觀察進行簡化設計。
07:21 *🔍 關鍵特徵與局部觀察的簡化設計*
- CNN 利用 Receptive Field 聚焦局部區域,避免分析整張影像,
- 討論特徵偵測的重要性,如鳥嘴、眼睛等特徵對分類的影響,
- 使用小區域偵測提升模型效率並減少計算負擔。
12:19 *🧠 Receptive Field 的基本概念*
- Receptive Field 定義為單個 Neuron 可觀察的範圍,彼此之間可以重疊。
- 不同的 Neuron 可以覆蓋相同或不同的 Receptive Field 區域,適應不同 Pattern 的偵測需求。
- 範圍設計可根據需求調整大小(如 3×3 或 11×11),甚至只關注特定的色彩通道。
14:40 *📐 Receptive Field 的設計自由度*
- Receptive Field 可設計成正方形、長方形,甚至不連續區域,但需考量是否符合問題需求。
- 經典設計包含所有通道,通常 Kernel Size 設為 3×3 或其他適當大小,避免過大。
17:36 *🔄 Receptive Field 的移動與重疊設計*
- 使用 Stride 控制 Receptive Field 的橫向與垂直移動,一般設為 1 或 2。
- 為避免邊界資訊遺失,可利用 Padding 補零或其他方法處理超出範圍的部分。
- 每一位置應被至少一個 Receptive Field 覆蓋,確保無 Pattern 遺漏。
20:32 *🐦 Pattern 在不同位置的偵測*
- 同一 Pattern(如鳥嘴)可能出現在影像的不同區域,Receptive Field 的全域覆蓋確保偵測能力。
- 偵測 Pattern 的 Neuron 可根據其範圍內的資訊有效運作,無需固定於某一區域。
23:36 *🧠 神經元參數共享的影響*
- 同參數的神經元因輸入不同,輸出也不同,適應不同的感知區域。
- 若感知區域相同且參數共享,輸出將固定不變,限制模型的靈活性。
25:06 *🔄 參數共享與 Filter 概念*
- 共享參數的神經元對應特定的 Filter,每個感知區域只使用一組參數。
- Filter 將影像處理簡化,命名為 Filter1、Filter2 等,每組濾鏡專注於特定模式。
27:11 *🏞️ 感知區域與卷積層的限制*
- 感知區域與參數共享減少模型的靈活性,但有助於影像模式的高效學習。
- CNN 針對影像設計,具有高模型偏差,能有效避免過擬合,但需慎用於非影像任務。
29:48 *📸 卷積層的構造與運作*
- 卷積層使用多個 Filter(如 3×3×Channel)專注於小範圍模式的偵測。
- Filter 在影像中滑動,透過內積計算檢測特定模式並生成特徵圖。
- 滑動步長(Stride)決定移動距離,影響特徵圖的解析度。
35:01 *🎨 第二層卷積層的結構與範圍解釋*
- 第二層卷積層的 Filter 高度需與前一層的 Channel 數相符。
- 雖然 Filter 是 3×3,但越深的層可觀察到更大範圍的影像特徵(例如由 5×5 組成的更大範圍)。
- 深層的 CNN 結構能檢測更複雜的模式,層數的增加讓視野擴展。
37:44 *🔍 Convolution 運作原理及其命名*
- Convolution 是將 Filter 掃過圖片,每組共享的參數稱為 Filter。
- 掃描圖片時,Neuron 共用權重以覆蓋不同範圍,實現模式檢測。
- Convolutional Layer 的命名由此操作而來。
39:19 *🐦 Pooling 的概念與應用*
- Pooling 通過 Subsampling 減少影像大小,保留重要特徵(如 Max Pooling 選最大值)。
- Pooling 無需學習參數,是一種固定操作,類似 Activation Function。
- Pooling 可降低運算負擔,但可能影響辨識微小特徵的能力。
43:23 *🧩 Convolution 與 Pooling 的交替與替代*
- 傳統架構以 Convolution 與 Pooling 交替,但 Pooling 逐漸被全卷積網路(Fully Convolutional Networks)取代。
- 不使用 Pooling 的架構可避免資訊損失,但需更高運算資源。
- Pooling 主要用於降低運算量,但隨著硬體性能提升,其必要性減弱。
43:52 *🏁 影像辨識網路的最後處理與應用*
- Pooling 後的輸出需進行 Flatten 操作,將矩陣轉為向量以輸入 Fully Connected Layer。
- 最後通過 Softmax 獲得影像辨識結果,形成經典影像辨識流程。
- 除影像辨識外,CNN 還應用於 AlphaGo 等其他機器學習領域。
46:47 *♟️ 為何 CNN 適用於圍棋問題*
- 圍棋棋盤被視為解析度為 19×19 的圖片,棋盤上每個位置以 48 個數字描述其特性。
- CNN 的設計特性(局部觀察、位置不變性)與圍棋問題需求吻合,例如 5×5 範圍足以捕捉重要棋盤模式。
50:16 *🧩 AlphaGo 的 CNN 架構分析*
- AlphaGo 採用 Zero Padding 和多層 3×3 的 Filter,透過 ReLU 激活與 Softmax 實現分類功能。
- 儘管 AlphaGo 未使用 Pooling,但其 CNN 結構針對圍棋需求量身定制,反映特定應用需靈活調整設計。
53:21 *📊 CNN 的多領域應用與限制*
- CNN 被應用於影像、語音及文字處理,但每個領域的設計細節需基於特性調整,如感受野與參數共享。
- CNN 無法天然處理影像縮放或旋轉,需透過 Data Augmentation 增強模型的泛化能力。
Made with HARPA AI
一直以來都在負責firmware的人竟然也能看懂老師的解說,真的遇到大師了! 唯有大師級才能細細說明,娓娓道來!
當建模時遇到問題,回來上點課,才發現解答都在這些基礎觀念中~~ 感謝老師
非本科系正在學AI相關,真的很感謝老師淺顯易懂的教學
很感謝老師仔細的講解,讓我能對於神經網路有更深的認識,影片內容十分精彩,過程中都不會有讓人有想睡的感覺。
老师讲的好清楚声音也好棒!每次下饭的时候都会拿来看
随缘一搜竟然找到新鲜视频!! 感谢老师一直更新
這是一門以數學為工具的「實驗科學」❤
新版講解更全面&清楚了
感謝老師的用心
偉大
so clearly explained! I read many blogs today, and none of them explain CNN as brilliant as Prof Lee🥰
這是我看過把CNN mode講的最清楚的了,好厲害
lee老师讲的太好啦 每个点都知其然并知其所以然 膜拜
34:23 在这里我懂了PyTorch 的 conv2d 的 out_channel 原来就是filter(的数量)的意思
哈哈,一年后来重新温习!
太清楚了 我愛宏毅老師
周五周六别人玩耍的时候赶紧补李老师的ML课💪!!
确实
老师讲的实在是太好了,初中生都能听懂
老師是台灣最酷的男人 好暈喔
回过头再听老师的课,犹有收益!
你才是我导师,讲得真好
41:33~41:42 max pooling 看起來是把每一組裡面最符合 filter pattern(32:47~33:21)的部份找出來。
感謝老師製作的教學影片!!真的講解得太好了!!
謝謝老師!!! 受益良多!!! 萬分感謝您
The most magnificant and fantastic lecture ever.
非常感谢李老师的讲解!
讲得很清楚,终于明白CNN了哈哈哈哈开心
李老师是神!👍
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)
老師真的教得太好了 感動
感謝宏毅老師的無私教學與分享!真是獲益良多。
老師在 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!
非常清楚地解释神经网络,很赞哦!期待有更多新的教学
41:49 的字幕似乎是mean pooling 被寫成min pooling?
是的,誰叫他們聽起來這麼像XD
谢谢老师,讲得真好。完全听懂了
最大也是最重要的优点是讲的特别清楚且易懂。666666
看了十分钟就果断点了关注
赞赞赞,老师讲得太清楚了!
真的太清晰了 比mit哪个intro to dl还好上不少
Hello 請問宏毅老師有時間可以幫忙講解一下 3D CNN嗎?volumetric、multi-view,point-cloud都具體怎樣實現呢? 多謝!!
看完這段,直覺可以用先用隨機森林挑選重要特徵值(影像的某些區域),再代回神經網路
有種感覺 會回到
釐清目的之下
找到的資料分析方法
希望老师多来大陆举行技术论坛讲座
32:50 也有可能用 ZERO PADDING 補滿原本圖片的大小
謝謝教授
我在本地电脑运行HW3的时候已经把model和数据 to gpu了,为啥run起来的时候cpu的utilization 也很高,我觉得不应该不用cpu吗?
有點不同意pooling只是做subsampling,從數學的角度來看pooling做的應該是「用不等式來刻畫特徵」,如果沒有pooling就是用「等式來刻畫特徵」,有些問題用不等式來刻畫特徵會更容易一點~在alpha go的例子裡,似乎等式對局部的特徵描述更精細一點,不過只要不等式夠多,理論上也是行得通的。。。
另外alpha go的地方也有點不同意,終極版的alpha zero使用ML的方式不完全是分類問題,更接近函數擬合問題,擬合的是winning rate(勝率),而且私以為alpha系列最核心的地方是用MCTS來幫助決策,如果單純只用CNN來決策效果應該會差很多>
喜欢8:52的图片
将一个filter在图片滑动的过程,作为不同位置某一个pattern检测的解释会不会有点牵强?比如完全一致的鸟嘴分别在两个图片的左上方,右上方,虽然同一个filter将会得到同一个值a,但是提取得到的特征,flatten以后特征中a的位置并不一样呀?希望老师能解答。
我的理解是這樣,滑動只是一種容易理解的簡化表示, 實際上不是真的滑動,只是不同神經元的參數共享,神經元數量不變,網路架構還是一樣大,但參數量減少很多
neuron老師發的是英式發音
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數量)
好人一生平安
想听元老师通过数学讲OVERFITTING和模型弹性
太爱李老师了
老师,您好,有个地方想向您请教。在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。
守备区域,,李老师肯定很爱棒球
請問老師,cross entropy 的介紹在哪一部影片中呢?謝謝您。
谢谢教授!
太精彩了
讲的真好!👍
感谢宏毅老师!所以kernel与filter是一个东西吗?
沒錯,kernel = convolutional kernel = filter = mask
@@laplaceha6700 牛逼!
請問吳培元老師也有線上課程嗎
感谢老师!
可以先pooling 再convolution 嗎?
可以啊 但是那个一般叫sub- sampling 在特征识别很常用
自分用9:30
請問吳培元老師的課程有錄影嗎?
謝謝老師
爲什麽是64個filter 不是3channle * 4 *4 = 48
filter數量是超參數,自己定的
厉害!要是听这个还听不明白就基本告别CNN了
非常棒!
请问老师是会随堂在UA-cam上直播嘛?
因為這學期修課人數多,怕教室坐不下,所以有一個給修課學生的隨堂直播,不過公開在YT 上的基本上就是我講的全部內容了,我沒有特別剪輯
@@HungyiLeeNTU 老师,有没有兴趣在大陆B站开个课呢,您在大陆特别受欢迎
@@HungyiLeeNTU 哇好的!!谢谢李老师💪
@@vomosnik4466 好像B站有同学搬运,不过不知道经过授权没
@@xinxinwang3700 应该没有授权吧,老师跟百度好像有个合作的课,但是用的paddle,并不想用paddle
想问一下 李老师的pres是用什么做的呀?
直接用 powerpoint 做的
通勤时候学习
太强惹。。谢谢!
這是什麼呢?🤔
老师,我有个小问题,就是说如果channels=16,我们使用二维的卷积核怎么去卷积呢
為何稱作 Convolutional Nerual Network ? 😮和數學中的
Converlution
有何關聯呢 ? 😮
老师我有一个问题,一个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 谢谢老师!
awesome!! ,我在查看《deeplearn》这本书中发现,作者说pooling层对Rotational invariance有积极作用,这是有可能的吗?😀
已按讚65次
Explain CNN with two ways!
通俗易懂
其實我一直覺得我看到的是....一隻鳥(但我沒喝酒啊~我是不是有問題...XD)
講得很好, 但感覺學ML還是聽英文較易懂!
有一天教官有事找李老師,
就問一個班上的同學說:李宏毅幾班...
同學想了一下回答說:逮金?
簽
666
中国大陸应没有这样水準的视频
您上个ML的课都要扯上政治因素?
@@yichaozhang9295 哪裡來的政治因素?
上課就上課,學知識就學知識為何要這樣講。不光是大陸或者台灣,很多華人都可以一起分享喔。
牛啊牛啊,这都能扯
知道李沐吗
老师很明白 佩服
從不見李飛飛出來當網紅,真正高手不會是網紅,當然李老師講課內容還是很能吸引人的,對一些沒有基礎自學能力不好的學生我想這樣的課程應該也是有必要,尤其在台灣,我不是不尊重李老師,而是希望你如果能力足夠可以更加深入去理解Ai很核心的部分,或許也可以在Ai流程中有一點小名氣或做出一點點貢獻
那andrej karpathy怎麼解釋?誰說大師就不能在網路上分享教學,別笑死人了。