* 應該堆疊多少層?
* 每層應該包含多少個單元或過濾器?
* 激活應該使用`relu`還是其他函數?
* 在某一層之后是否應該使用`BatchNormalization`?
* 應該使用多大的 dropout 比率?
在架構層面的參數叫作**超參數**(hyperparameter),以便將其與模型參數區分開來,后者通過反向傳播進行訓練。
* [ ] 選擇一組超參數(自動選擇)。
* [ ] 構建相應的模型。
* [ ] 將模型在訓練數據上擬合,并衡量其在驗證數據上的最終性能。
* [ ] 選擇要嘗試的下一組超參數(自動選擇)。
* [ ] 重復上述過程。
* [ ] 衡量模型在測試數據上的性能。
> 貝葉斯優化、遺傳算法、簡單隨機搜索
>
更新超參數則非常具有挑戰性。我們來考慮以下兩點:
* 計算反饋信號(這組超參數在這個任務上是否得到了一個高性能的模型)的**計算代價**可能非常高,它需要在數據集上創建一個新模型并從頭開始訓練。
* 超參數空間通常由許多**離散**的決定組成,因而既不是連續的,也不是可微的。因此,你通常不能在超參數空間中做梯度下降。相反,你必須依賴不使用梯度的優化方法,而這些方法的效率比梯度下降要低很多。
**隨機搜索**(隨機選擇需要評估的超參數,并重復這一過程)就是最好的解決方案,雖然這也是最簡單的解決方案
**Hyperopt** 比隨機搜索更好,是一個用于超參數優化的 Python 庫,其內部使用 Parzen 估計器的樹來預測哪組超參數可能會得到好的結果
*****
**注意**:
**在進行大規模超參數自動優化時**,有一個重要的問題需要牢記,那就是**驗證集過擬合**。因為你是使用驗證數據計算出一個信號,然后根據這個信號更新超參數,所以你實際上是在**驗證數據上訓練超參數**,很快會**對驗證數據過擬合**。請始終記住這一點。
- 基礎
- 張量tensor
- 整數序列(列表)=>張量
- 張量運算
- 張量運算的幾何解釋
- 層:深度學習的基礎組件
- 模型:層構成的網絡
- 訓練循環 (training loop)
- 數據類型與層類型、keras
- Keras
- Keras 開發
- Keras使用本地數據
- fit、predict、evaluate
- K 折 交叉驗證
- 二分類問題-基于梯度的優化-訓練
- relu運算
- Dens
- 損失函數與優化器:配置學習過程的關鍵
- 損失-二分類問題
- 優化器
- 過擬合 (overfit)
- 改進
- 小結
- 多分類問題
- 回歸問題
- 章節小結
- 機械學習
- 訓練集、驗證集和測試集
- 三種經典的評估方法
- 模型評估
- 如何準備輸入數據和目標?
- 過擬合與欠擬合
- 減小網絡大小
- 添加權重正則化
- 添加 dropout 正則化
- 通用工作流程
- 計算機視覺
- 卷積神經網絡
- 卷積運算
- 卷積的工作原理
- 訓練一個卷積神經網絡
- 使用預訓練的卷積神經網絡
- VGG16
- VGG16詳細結構
- 為什么不微調整個卷積基?
- 卷積神經網絡的可視化
- 中間輸出(中間激活)
- 過濾器
- 熱力圖
- 文本和序列
- 處理文本數據
- n-gram
- one-hot 編碼 (one-hot encoding)
- 標記嵌入 (token embedding)
- 利用 Embedding 層學習詞嵌入
- 使用預訓練的詞嵌入
- 循環神經網絡
- 循環神經網絡的高級用法
- 溫度預測問題
- code
- 用卷積神經網絡處理序列
- GRU 層
- LSTM層
- 多輸入模型
- 回調函數
- ModelCheckpoint 與 EarlyStopping
- ReduceLROnPlateau
- 自定義回調函數
- TensorBoard_TensorFlow 的可視化框架
- 高級架構模式
- 殘差連接
- 批標準化
- 批再標準化
- 深度可分離卷積
- 超參數優化
- 模型集成
- LSTM
- DeepDream
- 神經風格遷移
- 變分自編碼器
- 生成式對抗網絡
- 術語表