Читать книгу Нейронные сети. Эволюция - Каниа Алексеевич Кан - Страница 8

ГЛАВА 1
Основа для создания искусственного нейрона
Линейная классификация

Оглавление

Вспоминая школьный курс математики, из которого нам должно быть известно, что коэффициент А, в уравнении прямой, отвечает за её наклон. Чем больше значение коэффициента А, тем больше крутизна наклона линии. А коэффициент b – отвечает за точку начала координат по оси Y, через которую проходит прямая.


Раз мы еще толком не знаем, как будем действовать, давайте максимально всё упрощать. Будем считать, что прямая проходит через начало координат и соответственно параметр прямой b, обратим в ноль: b = 0. Тогда окончательное выражение нашей разделительной линии, станет еще более простым:


y = Ax

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

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


Примем за х – значение длины, а за y – значения высоты. Визуализируем эти данные на числовой прямой:


Нужно придумать как разделить эти два вида линейной функцией. Попробуем мыслить последовательно.

Для начала, попробуем разделить наши данные случайной разделительной линией. Для этого примем значение коэффициента крутизны любым случайным числом, пусть А = 0,4. Тогда наше уравнение разделительной линии примет вид – y = 0,4x.


Как следует из графика, линия – y = 0,4x, не отделяет один вид от другого. Для выполнения условия, её необходимо поднять выше. Для этого нам потребуется выработать последовательность команд и математические правила. Говоря иными словами, проработать алгоритм, когда при подаче данных из нашей таблицы (длины и ширины видов животных), в конечном итоге разделительная линия будет четко разделять эти два вида.


Теперь давайте протестируем нашу функцию на первом тренировочном примере, соответствующему виду крокодила, где: высота крокодила – 20, длина – 40. Не важно в чем будем измерять, в какой метрической системе. Самое близкое по условию это сантиметры. Но будем считать, что измеряем в условных единицах. Возьмём пример, где х=40 (длинна=40), и подставив в него значение нашего коэффициента А = 0,4, получим следующий результат:


y = Ax = (0,4) * (40) =16

На выходе получили значение высоты y = 16, а верный ответ y =20.

Для того чтоб исправить положение и приподнять нашу линию, введем понятие ошибки Е, с помощью следующей формулы:


Е = целевое значение из таблицы – фактический результат


Следуя этой формуле:


Е = 20 – 16 = 4


Теперь давайте приподнимем нашу линию на 4 пункта выше и отобразим это на графике:



Ну и тут, как мы можем наблюдать, наша линия проходит через точку определяющую вид – крокодил, а нам надо чтобы линия лежала выше.

Решается эта проблема очень легко, давайте примем наши целевые значение чуть больше, положим высоту у = 21, вместо у = 20. И снова пересчитаем ошибку с новыми параметрами:


Е = 21 – 16 = 5


Отобразим новый результат на координатах:


В итоге имеем новую прямую с новым значением коэффициента крутизны. Найдя этот коэффициент, мы как раз и сможем построить нужную нам прямую, на всех значениях оси x (длины).

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

Начнем с линейной функции:

y = Ax

Обозначим переменной T – целевое значение (наше значение из таблицы). Если ввести в искомый коэффициент А, такую поправку как: А+∆А = искомое А.

Тогда целевое значение можно определить, как:

T = (А + А) х

Отобразим последнее соотношение на графике:


Подставим эти значения в формулу ошибки Е = T – у:


Е = T – у = (А + ∆А) х – Ах = Ax + (∆А) х – Ах = (∆А)х

Е = (∆А)х


Теперь зная, как ошибка Е связана с ∆А, нетрудно выяснить что:


∆А = Е / х

Отлично! Теперь мы можем использовать ошибку Е для изменения наклона классифицирующей линии на величину ∆А в нужную сторону.

Давайте сделаем это! При x = 40 и коэффициенте А = 0,4, ошибка E = 5, попробуем найти величину ∆А:

∆А = Е/х = 5 / 40 = 0,125

Обновим наше начальное значение А:

А = А+∆А = 0,4 +0,125 = 0,525

Получается новое, улучшенное, значение коэффициента А = 0,525. Можно проверить это утверждение, найдя расчетное значение у с новыми параметрами:


y = А х = 0,525 * 40 = 21


В точку!

Теперь давайте узнаем на сколько надо изменить коэффициент А, чтоб найти верный ответ, для второй выборки из таблицы видов – жираф.

Целевые значения жирафа – высота y = 40, длина x = 20. Для того чтобы, разделительная линия не проходила через точку с параметрами жирафа, нам необходимо уменьшить целевое значение на единицу – y = 39.

Подставляем x = 20 в линейную функцию, в которой теперь используется обновленное значение А=0,525:

у = Ax = 0,525 * 20 = 10,5

Значение – у = 10,5, далеко от значения y = 39.

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

Е = Ty = 39 – 10,5 = 28,5


Теперь параметр ∆А примет следующее значение:


∆А = Е/х = 28,5 / 20 = 1,425


Обновим коэффициент крутизны А:


А = А+∆А = 0,525 +1,425 = 1,95

Получим обновленный ответ:

y = А х = 1,95 * 20 = 39


То есть, при x = 20, A = 1,95 и ∆А = 1,425 – функция возвращает в качестве ответа значение 39, которое и является желаемым целевым значением.

Представим все наши действия на графике:



Теперь мы наблюдаем, что линия разделила два вида, исходя из табличных значений. Но полученная нами разделяющая линия лежит гораздо выше её воображаемого центра, к которому мы стремимся:


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

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

Давайте сделаем такой перерасчет:

∆А = L * (Е / X)

Выберем L=0,5 в качестве начального приближения. То есть, мы будем использовать поправку вдвое меньшей величины, чем без сглаживания.

Повторим все расчеты, используя начальное значение А=0,4. Первый тренировочный пример дает нам у = Ax = О,4 * 40 = 16. При x = 40 и коэффициенте А = 0,4, ошибка E = T – y = 21 – 16 = 5. Чтобы график прямой, не проходил через точку с нашими координатами, а проходил выше её, то принимаем целевое значение – T = 21.

Рассчитаем поправку: ∆А = L / х) = 0,5*(5 / 40) = 0,0625. Обновленное значение: А = A + ∆А = 0,4 + 0,0625= 0,4625.

Сглаженное уточнение: y = Ax = 0,4625 * 40 = 18,5.

Теперь перейдем к расчетам следующего тренировочного примера.

Используя обновлённое на первом прогоне значение А, для второго тренировочного примера у = Ax = О,4625 * 20 = 9,25.

Значение, у = 9,25 – всё так же далеки от значения y = 39, но мы все равно движемся в нужном направлении, но уже с меньшой скоростью.

При x = 20 и коэффициенте А = 0, 4625, ошибка E = Ty = 39 – 9,25 = 29,75. Так как мы хотим, чтобы график прямой, не проходил через точку с нашими координатами, а проходил ниже её, то принимаем целевое значение – T = 39. Рассчитаем поправку ∆А = L (Е / х) = 0,5*(29,75 / 20) = 0,74375. Обновлённое значение А = A + ∆А = 0,4625+ 0,74375 = 1,20625.

Сглаженное уточнение y = = Ax = 1,20625 * 20 = 24,125.

Теперь еще раз отобразим на координатной диаграмме, начальный, улучшенный и окончательный варианты разделительной линии:



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

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

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

Нейронные сети. Эволюция

Подняться наверх