На этом шаге мы рассмотрим основные идеи, лежащие в основе работы нейронных сетей.
Давайте чуть усложним задачу.
Представьте, что машина должна преобразовывать километры в мили.
Предположим, что формула, преобразующая километры в мили, нам неизвестна. Все, что мы знаем, - это то, что данные единицы измерения связаны между собой линейной зависимостью. Это означает, что если мы удвоим количество миль, то количество километров, соответствующее данному расстоянию, также удвоится. Такая зависимость воспринимается нами интуитивно.
Существование линейного соотношения между километрами и милями дает нам ключ к разгадке формулы для вычислений. Она должна иметь следующий вид:
мили = километры * с,
Единственныи дополнительными подсказками нам могут служить отдельные примеры правильного выражения расстояний в километрах и милях. Эти примеры будут выступать как бы в роли экспериментальных данных, отражающих истинное положение вещей, которые мы используем для проверки своей научной теории.
Истинный пример | Километры | Мили |
---|---|---|
1 | 0 | 0 |
2 | 100 | 62,37 |
Что нам нужно сделать для того, чтобы определить недостающую величину константы? Давайте просто подставим в формулу какое-либо случайное значение! Например, предположим, что с=0,5, и посмотрим, что при этом произойдет.
Здесь мы подставляем в формулу мили = километры * с значение 100 вместо километры и текущее пробное значение 0,5 вместо константы с. В результате мы получаем ответ: 50 миль.
Ну хорошо. Это вовсе неплохо, если учесть, что значение с=0,5 было выбрано случайным образом! Но мы знаем, что оно не совсем точное, поскольку пример 2 истинного соотношения говорит нам о том, что правильный ответ - 62,137.
Мы ошиблись на 12,137. Это число представляет величину ошибки, т.е. разность между истинным значением из нашего списка примеров и расчетным значением.
Что дальше? Мы знаем, что ошиблись, и нам известна величина ошибки. Вместо того чтобы видеть в этой ошибке повод для отчаяния, мы используем эту информацию для того, чтобы предложить более удачное пробное значение константы с, чем первое.
Вернемся к ошибке. Мы ошиблись на 12,137 в сторону меньших значений. Так как формула для преобразования километров в мили линейная, мили = километры * с, мы знаем, что увеличение с приведет к увеличению результирующего значения.
Давайте немного подправим с, заменив значение 0,5 значением 0,6, и посмотрим, к чему это приведет.
Приняв для с значение 0,6, мы получаем мили = километры * с = 100 * 0,6 = 60. Это уже лучше, чем предыдущий ответ - 50. Налицо явный прогресс!
Теперь ошибка уменьшилась до 2,137. Вполне возможно, что с такой ошибкой мы могли бы даже смириться.
Здесь важно то, что величина ошибки подсказала нам, в каком направлении следует откорректировать величину с. Мы хотели увеличить выходной результат 50, поэтому немного увеличили с.
Вместо того чтобы использовать алгебру для нахождения точной величины поправки, на которую следует изменить значение с, мы продолжим использовать подход, заключающийся в постепенном уточнении значения этой константы. Если вы не уверены в правильности такого подхода и считаете, что было бы намного проще сразу определить точный ответ, то имейте в виду, что существует множество более интересных задач, для которых не существует простых математических формул, связывающих между собой входные и выходные значения. Именно поэтому нам и нужны более сложные методы наподобие нейронных сетей.
На следующем шаге мы закончим изучение этого вопроса.