Эндрю Нг Машинное обучение-2-Градиентный спуск и нормальное уравнение

машинное обучение
Эндрю Нг Машинное обучение-2-Градиентный спуск и нормальное уравнение

Публичный аккаунт WeChat: You Er Hut
Автор: Питер
Редактор: Питер

Эндрю Нг Машинное обучение-2-Градиентный спуск и нормальное уравнение

Основное содержание второй недели включает в себя:

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

Несколько функций

Продолжая использовать пример модели цен на жилье, добавляя дополнительные функции, такие как:Этаж комнаты, количество комнат, расположениеи т. д., составляют модель с несколькими переменными

n: представляет количество функций

x(i)x^{(i)}: представляет первыйiiобучающий экземпляр, который является первым экземпляром в матрице признаковiiОК, этовектор

xj(i)x^{(i)}_{j}: указывает первыйiiпервый тренировочный экземплярjjфункции; i для строки, j для столбца

Поддержка многомерных предположенийhhВыражается как: hθ(x)=θ0+θ1x1++θnxnh_{\theta}(x)=\theta_0+\theta_1x_1+…+\theta_nx_nДля упрощения формулы введемx0=1x_0=1, формула преобразуется в:hθ(x)=θ0x0+θ1x1++θnxnh_{\theta}(x)=\theta_0x_0+\theta_1x_1+…+\theta_nx_nРазмер матрицы признаков X равенm*(n+1)m*(n+1), формула упрощается до:hθ(x)=θTXh_{\theta}{(x)}=\theta^{T}X


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

Цели алгоритма

Подобно одномерной линейной регрессии, в многомерной линейной регрессии строится функция стоимости, затем эта функция стоимости полностьюСумма квадратов ошибок моделирования,который:

J(θ0,θ1...θn)=12mi=1m(hθ(x(i))y(i))2J\left( {\theta_{0}},{\theta_{1}}...{\theta_{n}} \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( h_{\theta} \left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}

в:

hθ(x)=θTX=θ0+θ1x1+θ2x2+...+θnxnh_{\theta}\left( x \right)=\theta^{T}X={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}

Алгоритмический процесс

исходная форма: θj:=θjαJ(θ0,θ1,...,θn)θj\theta_j:=\theta_j-\alpha \frac {\partial J(\theta_0,\theta_1,...,\theta_n)}{\partial \theta_j}

функция стоимостиJJВнесите: θj:=θj12mαi=1m(hθ(x(i))y(i))2θj\theta_j:=\theta_j-\frac{1}{2m} \alpha \frac {\partial \sum^m_{i=1}(h_{\theta}(x^{(i)})-y^{(i)})^2}{\partial \theta_j}

После взятия производной: θj:=θj1mαi=1m((hθ(x(i))y(i))xj(i)\theta_j:=\theta_j-\frac{1}{m} \alpha \sum^m_{i=1}((h_{\theta}(x^{(i)})-y^{(i)})\cdot x_j^{(i)}вjе(0,1,2,,n)j\in{(0,1,2,…,n)}

когдаn>=1n>=1час,θ0:=θ0a1mi=1m(hθ(x(i))y(i))x0(i){{\theta }_{0}}:={{\theta }_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{0}^{(i)}

θ1:=θ1a1mi=1m(hθ(x(i))y(i))x1(i){{\theta }_{1}}:={{\theta }_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{1}^{(i)}

θ2:=θ2a1mi=1m(hθ(x(i))y(i))x2(i){{\theta }_{2}}:={{\theta }_{2}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{2}^{(i)}

Код Python

Учитывая матрицу признаков X, выход y, скорость обученияθ\theta, найти функцию стоимостиJJ

import numpy as np

def computeCost(X,y,theta):
  inner = np.power(((X * theta.T) - y), 2)  # 求解每个平方项
  return np.sum(inner) / (2 / len(X))   # 求和再除以2*len(X)

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

Масштабирование функций

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

Возьмем в качестве примера задачу о ценах на жилье. Предположим, что используются только два признака: размер и количество домов, причем эти два параметра являются горизонтальной и вертикальной координатами соответственно.0-2000квадратных футов, количество в0-5между.

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

Решение: Максимально масштабируйте масштаб всех объектов от -1 до 1, чтобы:xn=xnunsnx_n=\frac{x_n-u_n}{s_n}вunu_nэто среднее значение,sns_nстандартное отклонение

средняя нормализация

проблема скорости обучения

На каждую итерацию алгоритма градиентного спуска влияет скорость обучения

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

Общие тарифы на обучение включают:α=0.01,0.03,0.1,0.31,3,10\alpha=0.01, 0.03, 0.1, 0.31, 3,10

Собственный и полиномиальная регрессия

Например, задача прогнозирования цен на жилье.hθ(x)=θ0+θ1ширина+θ2глубинаh_{\theta}{(x)} = \theta_0+\theta_1 \cdot ширина + \theta_2 \cdot глубинаПри этом площадь дома = ширина * глубина

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

Нормальное уравнение

Недостатки градиентного спуска

Для достижения локального оптимума требуется много итераций.

Демонстрация нормального уравнения

Нормальные уравнения необратимы

Нормальное уравнение состоит в том, чтобы найти параметр, который минимизирует функцию стоимости, решив уравнение в следующем примере.θ\theta:θ=(XTX)1XTy\theta ={{\left( {X^T}X \right)}^{-1}}{X^{T}}y

Необратимые матрицы нельзя решить с помощью нормальных уравнений

Normal Equation VS Gradient Descent

градиентный спуск нормальное уравнение
Необходимо выбрать скорость обученияθ\theta ненужный
Требуется несколько итераций одна операция
Его также лучше применять, когда количество признаков n велико. нужно рассчитать(XTX){{\left( {{X}^{T}}X \right)}}Обратная матрица . Если количество признаков n велико, вычислительные затраты высоки, потому что вычислительная временная сложность обратной матрицы равнаO(n3)O\left( {{n}^{3}} \right), обычно когдаnnМенее 10000 по-прежнему приемлемо
Подходит для всех типов моделей Подходит только для линейных моделей, не подходит для других моделей, таких как модели логистической регрессии.

параметрθ\thetaПроцесс решения

θ=(XTX)1XTy\theta ={{\left( {X^{T}}X \right)}^{-1}}{X^{T}}y, дляОбъясните процесс получения:

J(θ)=12mi=1m(hθ(x(i))y(i))2J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}

в:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn{h_{\theta}}\left( x \right)={\theta^{T}}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}

  1. Преобразуйте == векторное выражение == в == матричное выражение ==, тогда естьJ(θ)=12(Xθy)2J(\theta )=\frac{1}{2}{{\left( X\theta -y\right)}^{2}},в:
    • XXзаmmРядnnМатрица столбцов (mmколичество образцов,nnэто количество функций)
    • θ\thetaзаnnматрица со строкой и столбцом
    • yyзаmmматрица со строкой и столбцом
  2. == правильноJ(θ)J(\theta )Сделайте следующее преобразование ==

J(θ)=12(Xθy)T(Xθy)J(\theta )=\frac{1}{2}{{\left( X\theta -y\right)}^{T}}\left( X\theta -y \right)

=12(θTXTyT)(Xθy)=\frac{1}{2}\left( {{\theta }^{T}}{{X}^{T}}-{{y}^{T}} \right)\left(X\theta -y \right)

=12(θTXTXθθTXTyyTXθyTy)=\frac{1}{2}\left( {{\theta }^{T}}{{X}^{T}}X\theta -{{\theta}^{T}}{{X}^{T}}y-{{y}^{T}}X\theta -{{y}^{T}}y \right)

  1. следующий заJ(θ)J(\theta )Частная производная, правило вывода матрицы ==, которое нужно использовать==:

dABdB=AT\frac{dAB}{dB}={{A}^{T}}

dXTAXdX=2AX\frac{d{{X}^{T}}AX}{dX}=2AX

Итак, есть:

J(θ)θ=12(2XTXθXTy(yTX)T0)\frac{\partial J\left( \theta \right)}{\partial \theta }=\frac{1}{2}\left(2{{X}^{T}}X\theta -{{X}^{T}}y -{}({{y}^{T}}X )^{T}-0 \right)

=12(2XTXθXTyXTy0)=\frac{1}{2}\left(2{{X}^{T}}X\theta -{{X}^{T}}y -{{X}^{T}}y -0 \right)

=XTXθXTy={{X}^{T}}X\theta -{{X}^{T}}y

сделатьJ(θ)θ=0\frac{\partial J\left( \theta \right)}{\partial \theta }=0,

тогда естьθ=(XTX)1XTy\theta ={{\left( {X^{T}}X \right)}^{-1}}{X^{T}}y

Реализация нормальных уравнений Python

import numpy as np

def normalEquation(X, y):
  theta = np.linalg.inv(X.T@X)@X.T@Y   # X.T@X等价于X.T.dot(X)  @等价于.dot
  return theta