pytorch обучения белой рамки (6) - Выберите модель (К-кратную кросс-проверку), underfitting, переобучение (вес распад (= L2-норма регуляризация), процесс отбрасывания), прямое и обратное распространение распространения

Книга в основном сказать следующее о содержании «практического обучение глубокого изучения» этот цветок книги, цифра также приняла

Во- первых, это ошибка обучения (модель в наборе данных обучения , чтобы показать ошибки) и ошибки обобщения (модель в любой из набора тестовых данных , чтобы показать образец ожидаемой ошибки )

выбор модели

  Проверка набор данных (проверка набор данных), также известный как набор проверки (набор проверки), средство для выбора модели из набора поезда и теста установить небольшую часть набор данных, кроме зарезервированного

  Если достаточное количество обучающих данных, набор проверки в сторону также роскошь. Метод часто используется для K-кратно перекрестной проверки . Принцип заключается в следующем : множество поездов делятся на к югу от множества данных не перекрывается (SubDataset), затем сделать обучение и проверку к модели. В каждой тренировке, с SubDataset как набор проверки, остальные к-1 SubDataset набора поезда. Наконец, ошибка к подготовке и ошибка проверки усреднение (среднее)

Underfitting : модели не могут получить более низкую ошибку обучения, которая не может уменьшить ошибку обучения

Переобучения : модель ошибки обучения значительно меньше , чем ошибка на тестовом наборе

Решить при установке и метод более облегающие имеет два аспекта: Во- первых, выбрать соответствующие данные для сложности модели ( модели сложности слишком высока, склонны к более облегающие, в противном случае подвержены underfitting ). Во- вторых, обучающий набор данных размер ( Обучать SET слишком мал, это легко по-фитинга. В противном случае нет )

torch.pow () : требуемая мощность тензора ( ПР является силой (со средней мощностью) аббревиатуры ), тензор найти такой квадрат, то torch.pow (а, 2)

torch.cat ((А, В), дим) : CAT является конкатенация (переплетаются друг с другом) ссылка аббревиатура блога  https://www.cnblogs.com/JeasonIsCoding/p/10162356.html   хорошо объясняется, спасибо блоггеров. Обращаю больше : соединительный тензор А и В, и усиливаются тусклым-мерным, две такие матриц, тусклые = 1, то усиление колонны, т.е. сбоку сплайсинг   

. Torch.utils.data TensorDataset (X, Y) : вероятно , означает , что интегрирование х и у, так, чтобы соответствовать. То есть каждая строка , соответствующая каждой строке х у.

. torch.utils.data DatasetLoader (Набор данных = набора данных, batch_size = batch_size, перетасовка = True, num_workers 2 =) : Набор данных (по TensorDataset интеграции); batch_size (размер партии); перетасовка (или расстройство); num_workers (число нитей )

Затухание вес (вес распада)

  Вес распад называется L 2 нормы регуляризация , добавлен на основе оригинальной функции потерь L на 2 -норме срока симуляции.
  Формула норма || X || _ {$} = P (\ sum_ 1 = {I}} ^ {n- | X_ {I} | ^ {P}.) ^ L {1 / P $.} 2 норма: $ || х || _ {2} = (\ sum_ {я = 1} ^ {п} | X_ {г} | ^ {2}) ^ {1/2} $

  Новая функция потерь со сроком L2 норма штрафа составляет: $ \ IOTA ({W_ 1.}, {2} W_, B) + \ FRAC {\ лямбда 2N} {} || X || ^ 2 $ Torch. NORM ( ВХОД, P = ) находка норма

Отклон метод (Выпадение)

  Скрытые блоки, используя определенную вероятность отбрасывают. Отклон метод с использованием пересчитанной новым скрытым блоком формулы

  $ H_ {я} ^ { '} = \ гидроразрыва {\ хи _ {я}} {1-р} h_ {я} $

  В чем $ H_ {я} $ скрытые единицы $ H_ {I} = \ О (X_ {1} {w_ 1i} + X_ {2} w_ {2i} + X_ {3} w_ {3i} + X_ {4} w_ {4i} + B_ {я }) $, случайные величины $ \ xi_ {я} $ значение 0 (вероятность р) и 1 (с вероятностью 1-р)

Защиту отсев (X, drop_prob):
    Х = X.float ()
    утверждают, 0 <= drop_prob = 1 значение #drop_prob <должно быть между 0-1, и база данных смысл утверждения
    # В этом случае все элементы отбрасываются
    if keep_prob == 0:   #keep_prob=0等价于1-p=0,这是$\xi_{i}$值为1的概率为0
        return torch.zeros_like(X)
    mask = (torch.rand(X.shape) < keep_prob).float()  #torch.rand()均匀分布,小于号<判别,若真,返回1,否则返回0
    return mask * X / keep_prob  # 重新计算新的隐藏单元的公式实现

model.train():启用BatchNormalization和Dropout

model.eval():禁用BatchNormalization和Dropout

正向传播和反向传播

  在深度学习模型训练时,正向传播和反向传播之间相互依赖。下面1和2看不懂的可先看《动手学深度学习》3.14.1和3.14.2

  1.正向传播的计算可能依赖模型参数的当前值,而这些模型参数是在反向传播梯度计算后通过优化算法迭代的。

    如正则化项$ s = ({\lambda }/{2})(\left \| W^{(1)} \right \|_{F}^{2} + \left \| W^{(2)} \right \|_{F}^{2}) $依赖模型参数$W^{(1)}$和$W^{(2)}$的当前值,而这些当前值是优化算法最近一次根据反向传播算出梯度后迭代得到的。

  2.反向传播的梯度计算可能依赖于各变量的当前值,而这些变量的当前值是通过正向传播计算得到的。

    如参数梯度$ \frac{\partial J}{\partial W^{(2))}} = (\frac{\partial J}{\partial o}h^{T} + \lambda W^{(2)}) $的计算需要依赖隐藏层变量的当前值h。这个当前值是通过从输入层到输出层的正向传播计算并存储得到的。

рекомендация

отwww.cnblogs.com/JadenFK3326/p/12142974.html
рекомендация