Приложения для регуляризации глубокого обучения

глубокое обучение

Это 24-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

Регуляризация линейной регрессии

Для линейной регрессии мы ранее обсуждали два алгоритма:

  • градиентный спуск
  • нормальное уравнение

Regularized linear regression

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]minθJ(θ)\begin{aligned} &J(\theta)=\frac{1}{2 m}\left[\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{n} \theta_{j}^{2}\right] \\ &\min _{\theta} J(\theta) \end{aligned}

Для приведенной выше функции стоимости мы хотим найти подходящее θ, чтобы минимизировать ее.

Gradient descent

Помните, что традиционный градиентный спуск выглядит так:

Repeat {

θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)(j=0,1,2,3,,n)\theta_{j}:=\theta_{j}-\alpha \quad \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)} \quad\quad (j=0,1,2,3, \ldots, n)

}

Теперь поместите градиентный спуск вθ0\theta_0Просто выньте его и добавьте штрафной пункт к остальным. Поскольку, как упоминалось ранее, срок наказания составляет отθ1\theta_{1}началось.

Repeat {

θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}

θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj](j=1,2,3,,n)\theta_{j}:=\theta_{j}-\alpha \lbrack\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}+\frac{\lambda}{m} \theta_{j} \rbrack \quad\quad (j=1,2,3, \ldots, n)

}

После упрощения это можно записать так:

Repeat {

θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}

θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i)(j=0,1,2,3,,n)\theta_{j}:=\theta_{j}\left(1-\alpha \frac{\lambda}{m}\right)-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)} \quad\quad (j=0,1,2,3, \ldots, n)

}

Normal equaion

Исходное нормальное уравнение:

θ=(XTX)1XTy\theta=\left(X^{T} X\right)^{-1} X^{T} y

вX=[...(x0i)T......(x1i)T......(x2i)T.........(xni)T...]еRm×n+1X = \begin{bmatrix} ...(x^i_0)^T... \\ ...(x^i_1)^T... \\ ...(x^i_2)^T...\\ ...\\ ...(x^i_n)^T...\end{bmatrix} \in \R^{m \times n+1} \quad\quad\quad y=[y1y2y3...ym]еRmy = \begin{bmatrix} y^1 \\ y^2 \\ y^3 \\ ...\\ y^m \end{bmatrix} \in \R^m

После использования регуляризации

θ=(xx+λ[0111])1xTy\theta=\left(x^{\top} x+\lambda\left[\begin{array}{lllll} 0 & & & \\ & 1 & & \\ & & 1 & \\ & & & \cdots \\ & & & & 1 \end{array}\right]\right)^{-1} x^T y

где эта диагональная матрица[0111]\left[\begin{array}{lllll} 0 & & & \\ & 1 & & \\ & & 1 & \\ & & & \cdots \\ & & & & 1 \end{array}\right]измерениеRn+1×n+1\R_{n+1 \times n+1}

Регуляризация для логистической регрессии

Функция стоимости для логистической регрессии:

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]\begin{aligned} J(\theta) =-\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] \end{aligned}

Мы также добавим один сзади, после добавления:

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2\begin{aligned} J(\theta) =-\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]+\frac{\lambda}{2 m} \sum_{j=1}^{n} \theta_{j}^{2} \end{aligned}

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

градиентный спуск

Мы уже знаем, что линейная регрессия и логистическая регрессия выглядят одинаково по форме, поэтому мы напрямую перемещаем градиентный спуск линейной регрессии:

Repeat {

θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}

θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj](j=1,2,3,,n)\theta_{j}:=\theta_{j}-\alpha \lbrack\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}+\frac{\lambda}{m} \theta_{j} \rbrack \quad\quad (j=1,2,3, \ldots, n)

}

Чтобы его регуляризация соответствовала логистической регрессии, нам нужно добавить единицу ко второму выражению:

Repeat {

θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}

θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj](j=1,2,3,,n)\theta_{j}:=\theta_{j}-\alpha \lbrack\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}+\frac{\lambda}{m} \theta_{j} \rbrack \quad\quad (j=1,2,3, \ldots, n)

}

Хотя это похоже на линейную регрессию, важно помнить разницу между ними.h(x)h(x)Есть разница.

Advanced optimization

Говоря о логистической регрессии, помимо градиентного спуска, мы также упомянули другие продвинутые алгоритмы, но не вдавались в них подробно. Итак, как использовать регуляризацию в продвинутых алгоритмах

function[jVal,gradient]=costFunction(theta)function [jVal, gradient] = costFunction (theta)

jValjVal=[ code to compute J(θ)J(\theta)]

gradient(1)=[gradient (1)=\left[\right. code to compute θ0J(θ)]\left.\frac{\partial}{\partial \theta_{0}} J(\theta)\right]

gradient(2)=[gradient (2)=\left[\right. code to compute θ1J(θ)]\left.\frac{\partial}{\partial \theta_{1}} J(\theta)\right]

...

gradient(n+1)=[gradient (n+1)=\left[\right. code to compute θnJ(θ)]\left.\frac{\partial}{\partial \theta_{n}} J(\theta) \quad\right]

Вам все еще нужно написать свою собственную функцию costFunction, в этой функции:

  • function[jVal,gradient]=costFunction(theta)function [jVal, gradient] = costFunction (theta)Нужно пройти в тета, тета=[θ0θ1θn]=\left[\begin{array}{c}\theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n}\end{array}\right]
  • jValjVal=[ code to compute J(θ)J(\theta)] Это предложение является выражением для записи функции стоимости J
  • gradient(1)=[gradient (1)=\left[\right. code to compute θ0J(θ)]\left.\frac{\partial}{\partial \theta_{0}} J(\theta)\right]это рассчитать1mi=1m(hθ(x(i))y(i))x0(i)\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}
  • gradient(n+1)=[gradient (n+1)=\left[\right. code to compute θnJ(θ)]\left.\frac{\partial}{\partial \theta_{n}} J(\theta) \quad\right] это рассчитать1mi=1m(hθ(x(i))y(i))xn(i)+λmJ(θn)\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{n}^{(i)}+\frac{\lambda}{m}J(\theta_n)