# Python深度學習實作 : Keras快速上手 ###### tags: `Python` `keras` [博客來](https://www.books.com.tw/products/0010790699) * 深度學習: * 解決資料量大、具規範性,但是決策函數高度非線性的問題 * 應用領域:徒刑事別、語音辨識、文字產生、自然語言分析等 * 鳶尾花卉資料集 (花瓣&花萼的關係) * 山鳶尾 Iris Setosa * 變色鳶尾 Iris Versicolor * 維吉尼亞鳶尾 Iris Virginica * GLM (Generalized Linear Model) - 廣義線性模型 * 斜率 (權重) * 截距項 * One Hot編碼法 * 神經網路 * 組合函數 Combination Function (例如: RBF網路常用的函數) * 線性組合函數 * 基於歐幾里得距離的函數 * 啟動函數 Activation Function (塌縮函數) * tanh、logistic、高斯函數,統稱sigmoid函數 * 無限的實數域壓縮到(-1,1)或(0,1)之間有限域 * 如果不變換,則稱為Identity或是線性啟動函數 * 誤差函數 Error Function (損失函數) * 常用函數: 1. 均方誤差 MSE 2. 平均絕對誤差 MAE 3. 交叉熵損失 Cross-Entropy * 測量模型輸出值p和真實的因變數值y之間的差異 * 目標函數 Object Function * 深度學習的其他概念 * 批量 batch * 線上學習 Online learning * 離線學習 Offline learning * 偏移/門檻值 Bias * 標準化資料 * 重調整 Rescaling * 加上一個向量 or 減去一個常數 * 再乘以或除以一個常數 * 正規化 Normalization * 將一個向量除以其範數;例如採用歐幾里得距離,則以向量的變異量數作為範數 * 通常採全距為範數,即將向量減去最小值,並除以全距,使數值範圍落在0到1之間 * 標準化 Standardization * 將一個向量移除其位置和規模的度量 * 歐幾里得距離 Euclidean Distance 在數學世界中,任何維度上兩點之間的最短距離稱為歐幾里得距離。它是兩點之差的平方和的平方根。 * 最佳化決策函數時,通常是針對一個誤差的度量,例如誤差的平方,以求得一系列參數,然後最小化這個誤差度量的值來進行,目前一般採用的計算方法是梯度下降法。 * 梯度下降演算法 (Gradient Descent Method) * 一階偏導數 * 牛頓法 (Newton Method) - 二階偏導數 * 增穩牛頓法 Stabilized Newton Method * 嶺增穩牛頓法 Ridge Stabilized Newton Method * 複合函數: 啟動函數套著一個組合函數;參數更新部分,就需要使用微積分的鏈式法則(Chain Rule)計算複合函數的導數。 * 反向傳播演算法 (Backpropagation) * Keras提供幾種易於使用的工具,包括針對: * 序列模型的資料預處理 * 文字預處理 * 標記化Tokenize * 步驟: * 文字拆分 * out = text_to_word_sequence(text, lower=True, filters="a") * cht_out = jieba.lcut(text, cut_all=False) * jieba.lcut_for_search * cut/lcut ; cut_for_search/lcut_for_search 返回一個list * 建立索引 * one_hot() * hash() * 序列補齊 Padding * pad_sequences() * 轉換為矩陣 * 使用標記類批量處理文字檔 * Tokenizer() * fit_on_text() * text_to_matrix() * sequence_to_matrix() * keras.preprocessing.text - for English only * Python的結巴(jieba)分詞提供的切分函數Cut - for 中文 * 文字輸入的資料處理 * 圖片輸入的資料處理 * keras.preprocessing程式庫 * text * sequence * image * 序列資料預處理 * 序列資料:文字、時間...等 * N-Gram * Skip Gram (Word2Vec) * z = skipgrams() * 圖片資料登錄 * keras.preprocessing.image.ImageDataGenerator * Keras模型 * 序列模型 - Sequential類別 * from Keras.models import Sequential * from Keras.layers import Dense, Activation * 通用模型 - Model類別 * from Keras.models import Model * from Keras.layers import Input, Dense * Keras重要物件 * 啟動物件 * 使用方式: 1. 單獨定義一個啟動層 2. 前置層裡面透過啟動選項定義所需要的啟動函數 * Keras內建: * softmax * softplus * softsign * elu (Exponential Linear Unit) * relu (Rectified Linear Unit) * tanh * sigmoid * hard_sigmoid * linear * 初始化物件 * kernel_initializer * bias_initializer * Keras內建: * Zeros * Ones * Constant(value=x) * RandomNormal(mean=x, stddev=x) * TruncatedNormal(mean=0, stddev=0.05) * glorot_normal * he_normal * RandomUniform(minval=x, maxval=x) * glorot_uniform * he_uniform * USER DEFINITION * 正規化物件 * kernel_regularizer * bias_regularizer * activity_regularizer * Keras網路層構造 * 核心層 Core Layer * 全連接層 * 啟動層 * 放棄層 Dropout * 扁平化層 Flatten * 重構層 Reshape * 排列層 Permute * 向量反復層 RepeatVector * Lambda層 * 啟動值正規化層 * 掩蓋層 Masking * 卷積層 * 一維卷積操作 * 二維卷積操作 * 三維卷積操作 * 切割操作 * 補零操作