## 第3章了解ConvNets構建塊
鑒于ConvNets領域中過多的未解答的問題,本章研究了典型卷積網絡中每層處理的作用和重要性。為此,將審查處理這些問題的最突出的努力。特別是,各種ConvNet組件的建模將從理論和生物學角度進行介紹。每個組成部分的介紹以討論結束,總結了我們目前的理解水平。
### 3.1卷積層
可以說,卷積層是ConvNet架構中最重要的步驟之一。基本上,卷積是線性的移位不變運算,包括在輸入信號上執行局部加權組合。根據所選擇的權重集(_,即_。所選擇的點擴展函數),顯示輸入信號的不同屬性。在頻域中,點擴散函數的相關性是調制函數,其告知如何通過縮放和相移來修改輸入的頻率分量。因此,選擇正確的內核來捕獲輸入信號中包含的最重要和最重要的信息是至關重要的,這些信息允許對信號內容做出強有力的推斷。本節討論了處理內核選擇步驟的一些不同方法。
#### 3.1.1生物學觀點
在mamalian視覺皮層中進行分層處理的神經生理學證據為空間和時空ConvNets提供了潛在的啟發。特別是,假設一系列簡單和復雜細胞逐漸提取視覺輸入的更抽象屬性的研究[74]特別重要。在視覺皮層處理的最早階段,簡單細胞顯示出能夠檢測原始特征,例如定向光柵,條形和邊緣,在后續階段出現更復雜的調諧。
用于對皮質簡單細胞的所述特性進行建模的流行選擇是一組定向的Gabor濾波器或各種尺度的高斯導數。更一般地,在該處理級別選擇的濾波器通常是定向帶通濾波器。幾十年后,大多數生物模型仍然依賴于層次結構初始層的同一組簡單單元[117,130,131,79,5,48]。事實上,這些相同的Gabor核也被擴展到色彩[155]和時間[79]域,分別解釋了顏色和運動敏感神經元。
然而,當涉及在視覺皮層的更高區域表示細胞時,問題變得更加微妙,并且在Hubel和Wiesel的工作上建立的大多數貢獻都在努力尋找這些區域的適當表示。 HMAX模型是解決這個問題的最著名的模型之一[117]。 HMAX模型的主要思想是通過組合來自先前層的濾波器獲得層次結構的較高層處的濾波器,使得較高層處的神經元響應先前神經元的共激活。這種方法最終應該允許模型在更高層響應越來越復雜的模式,如圖3.1所示。這種方法與Hebbian理論很好地相關,即“一起發射,連接在一起的細胞”[65]。

圖3.1:HMAX模型的圖示。該模型由具有交替的簡單()和復雜()細胞的細胞層次組成。過濾操作發生在單元的級別。在該圖中顯示,初始層的簡單細胞()通過使用定向Gabor過濾器檢測簡單定向條(_,即_。)。另一方面,較高層的簡單單元()響應模板的過濾,模板是前一個()層使用的過濾器組合,這樣層次結構中較高層的單元檢測到比定向更復雜的形狀酒吧。復合復合單元(C1,C2)介于簡單單元層之間,以跨越空間位置聚集類似調諧的單元,從而實現一定程度的移位不變性。圖[......]轉載。
HMAX模型的另一個標志是假設學習發揮作用以便識別相似視覺序列的各種觀點。此后該工作的直接擴展明確地介紹了學習在更高層建模過濾器。最成功的此類方法之一是由Serre _等人_引入的生物學動機網絡。 [131]試圖模擬在視覺皮層的初始層發生的過程,其中由層組成的網絡,其中簡單()和復雜()細胞交替,如圖3.2所示。可以看出,每個簡單細胞后面都是復雜細胞,因此網絡的整體結構可以概括為。在這個網絡中,卷積發生在和單元的層面。雖然單元依賴于導向的Gabor濾波器,但第二層使用的內核基于學習組件。這種選擇的動機是生物學證據表明學習發生在皮層的較高層[130],盡管也有證據表明學習在視覺皮層的早期層面起作用[11]。在這種情況下,學習過程對應于從層的訓練集中選擇隨機的補丁,其中是補丁的空間范圍,對應到方向的數量。 層特征圖是通過在每個尺度中的特征與所有方向上的學習補丁的同時執行模板匹配而獲得的。
視頻處理[79]存在對這項工作的直接擴展。用于視頻處理的內核旨在模擬背側流中細胞的行為。在這種情況下,單元涉及具有3D定向濾波器的卷積。特別地,使用三階高斯導數濾波器,因為它們具有良好的可分離性,并且采用類似的學習過程來為和單元選擇卷積核。

圖3.2:Serre _等_提出的網絡架構。與HMAX模型[117]類似,它由交替的簡單和復雜小區組成,因此所提出的網絡的總體架構可以概括為。然而,與HMAX模型相反,在訓練集中明確地學習在S2單元級別使用的模板,使得該層檢測復雜對象(_,即_。當用對象識別數據集訓練時)。該過程的細節總結在該圖的第二行。圖[131]轉載。
已經提出了上述基本思想的許多變化,包括更高層的各種學習策略[147,145],基于小波的濾波器[71],不同的特征稀疏化策略[73,147,110]和濾波器參數的優化[147, 107]。
另一個相關但有些不同的思路表明,在層次結構的更高層次上存在更復雜的單元,這些單元專用于捕獲中間形狀表示,_,例如_。曲率[120,121]。雖然HMAX類模型通過來自先前層的特征類型的組合建議建模形狀,但是這些研究提出了一種直接模擬超復雜細胞(也稱為終止細胞)而不求助于學習的方法。特別地,屬于該范例模型的模型通過簡單和復雜細胞的組合來復雜化細胞以產生新細胞,其能夠最大程度地響應不同程度和符號的曲率以及不同位置處的不同形狀。在建議超復雜細胞進行曲率計算時,這項工作建立在早期工作的基礎上,這些工作表明了類似的功能,_,例如_。 [32]。
另一個研究機構,主張在視覺皮層中發生的分層處理(稱為)逐步處理高階圖像結構[5,48,108]。因此提倡在第一層(_,即_取向的帶通濾波器)存在的同一組核在較高層重復。然而,假設相同的內核集合現在對從前一層獲得的不同輸入進行操作,則每層的處理揭示了輸入信號的不同屬性。因此,在連續層提取的特征從簡單和局部變為抽象和全局,同時捕獲更高階的統計。此外,聯合統計也通過跨不同尺度和方向的分層響應的組合來解釋。
##### 討論
人類視覺皮層在識別世界的同時對各種變化保持不變的能力一直是該領域許多研究人員的驅動力。盡管已經提出了幾種方法和理論來模擬視覺皮層的不同層,但是跨越這些努力的共同點是存在將視覺任務分成更小塊的分層處理。然而,雖然大多數模型都同意初始層的內核集合的選擇,但是由Hubel和Wiesel [74]的開創性工作推動,負責識別更抽象特征的建模區域似乎更復雜和有爭議。此外,這些生物學上合理的模型通常會對其設計決策的理論基礎留下開放的關鍵問題。這個缺點也適用于更多的理論驅動模型,將在下一節中討論。
#### 3.1.2理論視角
更多的理論驅動方法通常受到生物學的啟發,但努力為其模型注入更多的理論依據。這些方法通常根據其內核選擇策略而有所不同。
查看內核選擇問題的一種方法是考慮自然界中的對象是一組原始形狀的集合,從而采用基于形狀的解決方案[47,45,46]。在這種情況下,所提出的算法首先使用一組定向Gabor濾波器在圖像中找到最原始的形狀(_,即_。定向邊緣)。使用這些邊緣,或更一般地說是部分,算法通過查看每個部分周圍越來越大的鄰域來找到下一層中的部分的潛在組合。基本上,每次向網絡呈現新圖像時,收集關于在前一層中給定部分的直接鄰域中存在其他部分類型的投票。在網絡看到訓練集中存在的所有圖像之后,使用來自前一層的部分的組合來構建網絡的每個層。組合的選擇基于在無監督訓練期間學習的概率。實際上,這種基于形狀的方法更多地是概念證明,其中只有層級的較低層可以以這種無監督的方式學習,而較高層是使用類別特定圖像學習的,如圖3.3所示。因此,只有當網絡僅從該對象類中看到示例時,才能在更高層中獲得對象的良好表示。但是,由于這種限制,這種算法無法合理地部署在具有以前未曾見過的不同類別的對象的更具挑戰性的數據集上。

圖3.3:由Fidler _等_提出的多層結構學習的樣本部分。第1行(從左到右):第2層和第3層樣本部分。第2行和第3行:使用面部,汽車和馬克杯學習第4層和第5層部分。圖[......]轉載。
內核選擇過程的另一個展望是基于許多基于訓練的卷積網絡學習冗余過濾器的觀察。此外,在這些網絡的前幾層中的許多學習過濾器類似于定向帶通濾波器; _例如_。見圖3.8。因此,最近的一些調查旨在將先驗注入其網絡設計中,特別關注卷積濾波器選擇。一種方法提出在2D導數算子[75]的基礎集上學習分層濾波器,如圖3.4所示。雖然此方法使用固定基礎的濾波器集,但它依賴于監督學習來在每個層的基礎中線性組合濾波器以產生有效的分層濾波器,因此它與數據集相關。盡管如此,使用一組過濾器和學習組合可以很好地與生物模型保持一致,例如HMAX [117]及其后繼者(_,例如_。[131,79]),并簡化網絡“架構,同時另外,由于學習是現代ConvNets的瓶頸之一,使用基礎集也可以通過極大地減少要學習的參數數量來簡化這一過程。由于這些原因,這些方法在最近的文獻中越來越受歡迎[75] ,28,148,100,158]。
有趣的是,跨越這些最近努力的共同點是減少冗余內核的目標,特別注重建模旋轉不變性(盡管它不一定是生物視覺的屬性)。關注旋轉的動機是觀察到,通常,學習過濾器是彼此的旋轉版本。例如,一項工作通過對一組圓諧波進行訓練來有針對性地學習旋轉等效[148]。或者,其他方法試圖通過改變網絡結構本身來硬編碼旋轉不變性,使得對于每個學習的濾波器,直接基于預定義的一組取向_例如_自動生成一組對應的旋轉版本。 [158],或者通過將每個學習的濾波器與定向Gabor濾波器的基組進行卷積[100]。

圖3.4:接收域CNN(也稱為RFNN)的示意圖。在該網絡中,所有層使用的濾波器(通過學習)構建為基本濾波器組的線性組合,其是一組階高斯導數。該網絡不是學習過濾器的內核參數,而是學習用于線性組合基組中的過濾器的參數。圖[?]復制。
其他方法通過將內核選擇問題作為基于群論的_例如_的不變性最大化問題,通過完全手工制作其網絡,進一步推動將先驗注入其網絡設計的想法。 [15,113,28]。例如,可以選擇內核,使得它們最大化對小變形和變換的不變性,以進行紋理識別[15]或最大化對象識別的旋轉不變性[113]。
可以說,散射變換網絡(ScatNet)具有迄今為止最嚴格的數學定義之一[15]。散射變換的構造從斷言開始,即根據手頭的任務,良好的圖像表示應該對小的局部變形和各種變換組不變。此方法中使用的內核是一組擴張和旋轉的小波,其中是小波的頻率位置,定義為,其中表示擴張,表示旋轉。網絡由卷積層次構成,使用以不同頻率為中心的各種小波,以及下一節中討論的各種非線性。所選擇的內核的頻率位置選擇為在每層較小。整個過程總結在圖3.5中。

圖3.5:散射變換網絡。在該網絡中,[15]中提出的散射變換在來自前一層的所有輸出的每一層上重復應用。實質上,每層的輸出反復進行相同的變換,然而,變換針對每層的不同有效頻率,從而在每一層提取新的信息。在該圖中,具有層的網絡的實例化被描繪為圖示。圖[15]轉載。
一個名為SOE-Net的相關ConvNet被提議用于時空圖像分析[60]。 SOE-Net依賴于理論動機,分析定義的過濾器。特別是,它的卷積塊依賴于一組3D定向高斯導數濾波器,這些濾波器在遵循類似于ScatNet的頻率減小路徑時重復應用,如圖3.6所示。然而,在這種情況下,網絡設計是根據時空定向分析進行的,并且通過所使用的基組的多尺度實例化來實施不變性。
松散地說,SOE-Net和ScatNet都屬于某些基于生物學模型所倡導的范式[5]。由于這些網絡基于嚴格的數學分析,因此在每層處理時,它們還會考慮信號的頻率成分。這種設計的直接結果之一是能夠做出關于網絡中使用的層數的理論驅動決策。特別地,假設使用頻率減小路徑計算網絡的不同層的輸出,則信號最終衰減。因此,一旦信號中剩余的能量很少,就停止迭代。此外,通過選擇允許有限基組(高斯導數)的濾波器,SOE-Net可以分析地指定所需的方向數。

圖3.6:SOE-Net架構。使用初始處理層提取各種方向的局部時空特征。  -  -  - 表示卷積,整流,歸一化和時空匯集,而R和L表示向右和向左濾波數據,分別為符號串(_,例如_ ]。LR)表示多次過濾。僅示出了具有2個濾波器(_,即_ .2方向)的網絡用于說明。層處的每個特征圖被視為新的單獨信號并被反饋到層以與同一組濾波器卷積,但由于時空池而具有不同的有效分辨率。圖[?]復制。
內核選擇過程的另一個簡單而強大的前景依賴于使用PCA學習的預先固定的過濾器[21]。在這種方法中,有人認為PCA可以被視為最簡單的自動編碼器類,可以最大限度地減少重建誤差。只需在整個訓練數據集上使用PCA學習過濾器。特別地,對于每個圖像中的每個像素,拍攝尺寸為的貼片并進行去義操作以產生一組貼片。來自每個圖像的這種重疊貼片的集合被堆疊在一起以形成體積。使用的濾波器對應于的第一個主特征向量。將這些載體重新整形以形成大小的核并與每個輸入圖像卷積以獲得特征圖。對于網絡的更高層重復相同的過程。
與ScatNet [15]和SOE-Net [60]相比,PCA方法的工作在數學上要少得多,并且更多地依賴于學習。然而,值得強調的是,最基本的自動編碼器形式能夠在包括人臉識別,紋理識別和物體識別在內的多個任務上獲得可觀的結果。一種密切相關的方法也依賴于通過k均值聚類學習的無監督內核選擇[35]。再一次,盡管與基于標準學習的體系結構相比,這種方法不會產生最先進的結果,但值得注意的是,即使在像MNIST這樣經過深入研究的數據集上,它仍然具有競爭力[91]。更一般地說,這種純無監督方法的有效性表明存在可以簡單地從數據的固有統計數據中利用的非平凡信息。
##### 3.1.2.1最佳內核數量
如前所述,多層體系結構的最大瓶頸是學習過程需要大量的訓練數據,這主要是由于需要學習大量參數。因此,仔細設計網絡架構并確定每層的內核數量至關重要。不幸的是,即使是手工制作的ConvNets通常也會隨機選擇內核數量(_,例如_。[15,113,131,79,21,45])。先前討論的分析定義的ConvNets中的一個例外是SOE-Net,其如前所述,由于其使用有限基組(_,即_。取向的高斯導數)而分析地指定濾波器的數量。
最近建議使用基組來減少每層內核數量的方法[75,28]提供了解決這個問題的優雅方法,盡管過濾器集的選擇和集合中的過濾器數量很大基于經驗考慮。解決此問題的其他最突出的方法旨在在培訓過程中優化網絡架構。處理這種優化問題的簡單方法,稱為最佳腦損傷[92],是從合理的架構開始,逐步刪除小幅度參數,其刪除不會對訓練過程產生負面影響。更復雜的方法[44]基于印度自助餐過程[59]。通過訓練網絡以最小化作為三個目標的組合的損失函數來確定最佳濾波器數量
(3.1)
其中是卷積層的數量,是層的總數。在(3.1)中,和分別是完全連接和卷積層的無監督損失函數。他們的作用是盡量減少重建錯誤,并使用未標記的數據進行培訓。相比之下,是為目標任務設計的監督損失函數,并且經過訓練以使用標記的訓練數據最大化分類準確度。因此,通過最小化重建誤差和任務相關的損失函數來調整每層中的濾波器的數量。該方法允許所提出的網絡使用標記和未標記的數據。
實際上,三種損失函數可以最小化。首先,濾波器參數是固定的,并且使用所有可用訓練數據(即標記和未標記),使用Grow-And-Prune(GAP)算法學習濾波器的數量。其次,通過使用標記的訓練數據最小化任務特定的損失函數來更新濾波器參數。 GAP算法可以描述為雙向貪心算法。正向傳遞增加了濾波器的數量。反向傳遞通過刪除冗余過濾器來減小網絡大小。
##### Discussion
總的來說,大多數理論驅動的卷積核選擇方法旨在將先驗引入其層次表示中,最終目標是減少對大規模訓練的需求。在這樣做時,這些方法或者依賴于通過基于群論的方法最大化不變性,或者依賴于基組上的組合。有趣的是,類似于更具生物學啟發的實例化,通常還觀察到存在明顯傾向于使用具有定向帶通濾波器外觀的濾波器對早期層進行建模。然而,更高層“內核”的選擇仍然是一個開放的關鍵問題。
- TensorFlow 1.x 深度學習秘籍
- 零、前言
- 一、TensorFlow 簡介
- 二、回歸
- 三、神經網絡:感知器
- 四、卷積神經網絡
- 五、高級卷積神經網絡
- 六、循環神經網絡
- 七、無監督學習
- 八、自編碼器
- 九、強化學習
- 十、移動計算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度學習
- 十三、AutoML 和學習如何學習(元學習)
- 十四、TensorFlow 處理單元
- 使用 TensorFlow 構建機器學習項目中文版
- 一、探索和轉換數據
- 二、聚類
- 三、線性回歸
- 四、邏輯回歸
- 五、簡單的前饋神經網絡
- 六、卷積神經網絡
- 七、循環神經網絡和 LSTM
- 八、深度神經網絡
- 九、大規模運行模型 -- GPU 和服務
- 十、庫安裝和其他提示
- TensorFlow 深度學習中文第二版
- 一、人工神經網絡
- 二、TensorFlow v1.6 的新功能是什么?
- 三、實現前饋神經網絡
- 四、CNN 實戰
- 五、使用 TensorFlow 實現自編碼器
- 六、RNN 和梯度消失或爆炸問題
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用協同過濾的電影推薦
- 十、OpenAI Gym
- TensorFlow 深度學習實戰指南中文版
- 一、入門
- 二、深度神經網絡
- 三、卷積神經網絡
- 四、循環神經網絡介紹
- 五、總結
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高級庫
- 三、Keras 101
- 四、TensorFlow 中的經典機器學習
- 五、TensorFlow 和 Keras 中的神經網絡和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于時間序列數據的 RNN
- 八、TensorFlow 和 Keras 中的用于文本數據的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自編碼器
- 十一、TF 服務:生產中的 TensorFlow 模型
- 十二、遷移學習和預訓練模型
- 十三、深度強化學習
- 十四、生成對抗網絡
- 十五、TensorFlow 集群的分布式模型
- 十六、移動和嵌入式平臺上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、調試 TensorFlow 模型
- 十九、張量處理單元
- TensorFlow 機器學習秘籍中文第二版
- 一、TensorFlow 入門
- 二、TensorFlow 的方式
- 三、線性回歸
- 四、支持向量機
- 五、最近鄰方法
- 六、神經網絡
- 七、自然語言處理
- 八、卷積神經網絡
- 九、循環神經網絡
- 十、將 TensorFlow 投入生產
- 十一、更多 TensorFlow
- 與 TensorFlow 的初次接觸
- 前言
- 1.?TensorFlow 基礎知識
- 2. TensorFlow 中的線性回歸
- 3. TensorFlow 中的聚類
- 4. TensorFlow 中的單層神經網絡
- 5. TensorFlow 中的多層神經網絡
- 6. 并行
- 后記
- TensorFlow 學習指南
- 一、基礎
- 二、線性模型
- 三、學習
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 構建簡單的神經網絡
- 二、在 Eager 模式中使用指標
- 三、如何保存和恢復訓練模型
- 四、文本序列到 TFRecords
- 五、如何將原始圖片數據轉換為 TFRecords
- 六、如何使用 TensorFlow Eager 從 TFRecords 批量讀取數據
- 七、使用 TensorFlow Eager 構建用于情感識別的卷積神經網絡(CNN)
- 八、用于 TensorFlow Eager 序列分類的動態循壞神經網絡
- 九、用于 TensorFlow Eager 時間序列回歸的遞歸神經網絡
- TensorFlow 高效編程
- 圖嵌入綜述:問題,技術與應用
- 一、引言
- 三、圖嵌入的問題設定
- 四、圖嵌入技術
- 基于邊重構的優化問題
- 應用
- 基于深度學習的推薦系統:綜述和新視角
- 引言
- 基于深度學習的推薦:最先進的技術
- 基于卷積神經網絡的推薦
- 關于卷積神經網絡我們理解了什么
- 第1章概論
- 第2章多層網絡
- 2.1.4生成對抗網絡
- 2.2.1最近ConvNets演變中的關鍵架構
- 2.2.2走向ConvNet不變性
- 2.3時空卷積網絡
- 第3章了解ConvNets構建塊
- 3.2整改
- 3.3規范化
- 3.4匯集
- 第四章現狀
- 4.2打開問題
- 參考
- 機器學習超級復習筆記
- Python 遷移學習實用指南
- 零、前言
- 一、機器學習基礎
- 二、深度學習基礎
- 三、了解深度學習架構
- 四、遷移學習基礎
- 五、釋放遷移學習的力量
- 六、圖像識別與分類
- 七、文本文件分類
- 八、音頻事件識別與分類
- 九、DeepDream
- 十、自動圖像字幕生成器
- 十一、圖像著色
- 面向計算機視覺的深度學習
- 零、前言
- 一、入門
- 二、圖像分類
- 三、圖像檢索
- 四、對象檢測
- 五、語義分割
- 六、相似性學習
- 七、圖像字幕
- 八、生成模型
- 九、視頻分類
- 十、部署
- 深度學習快速參考
- 零、前言
- 一、深度學習的基礎
- 二、使用深度學習解決回歸問題
- 三、使用 TensorBoard 監控網絡訓練
- 四、使用深度學習解決二分類問題
- 五、使用 Keras 解決多分類問題
- 六、超參數優化
- 七、從頭開始訓練 CNN
- 八、將預訓練的 CNN 用于遷移學習
- 九、從頭開始訓練 RNN
- 十、使用詞嵌入從頭開始訓練 LSTM
- 十一、訓練 Seq2Seq 模型
- 十二、深度強化學習
- 十三、生成對抗網絡
- TensorFlow 2.0 快速入門指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 簡介
- 一、TensorFlow 2 簡介
- 二、Keras:TensorFlow 2 的高級 API
- 三、TensorFlow 2 和 ANN 技術
- 第 2 部分:TensorFlow 2.00 Alpha 中的監督和無監督學習
- 四、TensorFlow 2 和監督機器學習
- 五、TensorFlow 2 和無監督學習
- 第 3 部分:TensorFlow 2.00 Alpha 的神經網絡應用
- 六、使用 TensorFlow 2 識別圖像
- 七、TensorFlow 2 和神經風格遷移
- 八、TensorFlow 2 和循環神經網絡
- 九、TensorFlow 估計器和 TensorFlow HUB
- 十、從 tf1.12 轉換為 tf2
- TensorFlow 入門
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 數學運算
- 三、機器學習入門
- 四、神經網絡簡介
- 五、深度學習
- 六、TensorFlow GPU 編程和服務
- TensorFlow 卷積神經網絡實用指南
- 零、前言
- 一、TensorFlow 的設置和介紹
- 二、深度學習和卷積神經網絡
- 三、TensorFlow 中的圖像分類
- 四、目標檢測與分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自編碼器,變分自編碼器和生成對抗網絡
- 七、遷移學習
- 八、機器學習最佳實踐和故障排除
- 九、大規模訓練
- 十、參考文獻