HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>26 дек 2022</li>
2 <ul><li>26 дек 2022</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>На практике показываем, как работает TensorFlow, и за пять минут напишем первую модель, которая найдёт правильную математическую формулу.</p>
4 </ul><p>На практике показываем, как работает TensorFlow, и за пять минут напишем первую модель, которая найдёт правильную математическую формулу.</p>
5 <p>Кадр: сериал "Любовь, смерть и роботы"</p>
5 <p>Кадр: сериал "Любовь, смерть и роботы"</p>
6 <p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
6 <p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
7 <p>Сегодня мы разберём, зачем нужна библиотека TensorFlow и как её установить, что такое машинное обучение и как научить компьютер решать уравнения. Всё это - в одной статье.</p>
7 <p>Сегодня мы разберём, зачем нужна библиотека TensorFlow и как её установить, что такое машинное обучение и как научить компьютер решать уравнения. Всё это - в одной статье.</p>
8 <p>Фреймворк TensorFlow - это относительно простой инструмент, который позволяет быстро создавать нейросети любой сложности. Он очень дружелюбен для начинающих, потому что содержит много примеров и уже готовых моделей машинного обучения, которые можно встроить в любое приложение. А продвинутым разработчикам TensorFlow предоставляет тонкие настройки и API для ускоренного обучения.</p>
8 <p>Фреймворк TensorFlow - это относительно простой инструмент, который позволяет быстро создавать нейросети любой сложности. Он очень дружелюбен для начинающих, потому что содержит много примеров и уже готовых моделей машинного обучения, которые можно встроить в любое приложение. А продвинутым разработчикам TensorFlow предоставляет тонкие настройки и API для ускоренного обучения.</p>
9 <p>TensorFlow поддерживает несколько языков программирования. Главный из них - это Python. Кроме того, есть отдельные пакеты для C/C++, Golang и Java. А ещё - форк TensorFlow.js для исполнения кода на стороне клиента, в браузере, на JavaScript.</p>
9 <p>TensorFlow поддерживает несколько языков программирования. Главный из них - это Python. Кроме того, есть отдельные пакеты для C/C++, Golang и Java. А ещё - форк TensorFlow.js для исполнения кода на стороне клиента, в браузере, на JavaScript.</p>
10 <p>Этим возможности фреймворка TensorFlow не ограничиваются. Библиотеку также можно использовать для обучения моделей на смартфонах и умных устройствах (TensorFlow Lite) и создания корпоративных нейросетей (TensorFlow Extended).</p>
10 <p>Этим возможности фреймворка TensorFlow не ограничиваются. Библиотеку также можно использовать для обучения моделей на смартфонах и умных устройствах (TensorFlow Lite) и создания корпоративных нейросетей (TensorFlow Extended).</p>
11 <p>Чтобы создать простую нейросеть на TensorFlow, достаточно понимать несколько основных принципов:</p>
11 <p>Чтобы создать простую нейросеть на TensorFlow, достаточно понимать несколько основных принципов:</p>
12 <ul><li>что такое машинное обучение;</li>
12 <ul><li>что такое машинное обучение;</li>
13 <li>как обучаются нейросети и какие методы для этого используются;</li>
13 <li>как обучаются нейросети и какие методы для этого используются;</li>
14 <li>как весь процесс обучения выглядит в TensorFlow.</li>
14 <li>как весь процесс обучения выглядит в TensorFlow.</li>
15 </ul><p>О каждом из этих пунктов мы расскажем подробнее ниже.</p>
15 </ul><p>О каждом из этих пунктов мы расскажем подробнее ниже.</p>
16 <p>В обычном программировании всё работает по заранее заданным инструкциям. Разработчики их прописывают с помощью выражений, а компьютер строго им подчиняется. В конце выполнения компьютер выдаёт результат.</p>
16 <p>В обычном программировании всё работает по заранее заданным инструкциям. Разработчики их прописывают с помощью выражений, а компьютер строго им подчиняется. В конце выполнения компьютер выдаёт результат.</p>
17 <p>Например, если описать в обычной программе, как вычисляется площадь квадрата, компьютер будет строго следовать инструкции и всегда выдавать стабильный результат. Он не начнёт придумывать новые методы вычисления и не будет пытаться оптимизировать сам процесс вычисления. Он будет всегда следовать правилам - тому самому алгоритму, выраженному с помощью языка программирования.</p>
17 <p>Например, если описать в обычной программе, как вычисляется площадь квадрата, компьютер будет строго следовать инструкции и всегда выдавать стабильный результат. Он не начнёт придумывать новые методы вычисления и не будет пытаться оптимизировать сам процесс вычисления. Он будет всегда следовать правилам - тому самому алгоритму, выраженному с помощью языка программирования.</p>
18 Обычное программирование - это когда входные данные поступают в программу, а она выдаёт результат<em>Иллюстрация: Оля Ежак для Skillbox Media</em><p>Машинное обучение работает по-другому. Нам нужно отдать компьютеру уже готовые результаты и входные данные и сказать: "Найди алгоритм, который сможет сделать из этих входных данных вот эти результаты". Нам неважно, как он будет это делать. Для нас важнее, чтобы результаты были точными.</p>
18 Обычное программирование - это когда входные данные поступают в программу, а она выдаёт результат<em>Иллюстрация: Оля Ежак для Skillbox Media</em><p>Машинное обучение работает по-другому. Нам нужно отдать компьютеру уже готовые результаты и входные данные и сказать: "Найди алгоритм, который сможет сделать из этих входных данных вот эти результаты". Нам неважно, как он будет это делать. Для нас важнее, чтобы результаты были точными.</p>
19 <p>Ещё мы должны говорить компьютеру, когда он ответил правильно, а когда - неправильно. Это сделает обучение эффективным и позволит нейросети постепенно двигаться в сторону более точных результатов.</p>
19 <p>Ещё мы должны говорить компьютеру, когда он ответил правильно, а когда - неправильно. Это сделает обучение эффективным и позволит нейросети постепенно двигаться в сторону более точных результатов.</p>
20 В машинном обучении всё работает по-другому: мы отдаём нейросети результат, а она выдаёт нам алгоритм<em>Иллюстрация: Оля Ежак для Skillbox Media</em><p>В целом машинное обучение похоже на обучение обычного человека. Например, чтобы различать обувь и одежду, нам нужно посмотреть на какое-то количество экземпляров обуви и одежды, высказать свои предположения относительно того, что именно сейчас находится перед нами, получить обратную связь от кого-то, кто уже умеет их различать, - и тогда у нас появится алгоритм, как отличать одно от другого. Увидев туфли после успешного обучения, мы сразу сможем сказать, что это обувь, потому что по всем признакам они соответствуют этой категории.</p>
20 В машинном обучении всё работает по-другому: мы отдаём нейросети результат, а она выдаёт нам алгоритм<em>Иллюстрация: Оля Ежак для Skillbox Media</em><p>В целом машинное обучение похоже на обучение обычного человека. Например, чтобы различать обувь и одежду, нам нужно посмотреть на какое-то количество экземпляров обуви и одежды, высказать свои предположения относительно того, что именно сейчас находится перед нами, получить обратную связь от кого-то, кто уже умеет их различать, - и тогда у нас появится алгоритм, как отличать одно от другого. Увидев туфли после успешного обучения, мы сразу сможем сказать, что это обувь, потому что по всем признакам они соответствуют этой категории.</p>
21 <p>Чтобы начать пользоваться фреймворком TensorFlow, можно выбрать один из вариантов:</p>
21 <p>Чтобы начать пользоваться фреймворком TensorFlow, можно выбрать один из вариантов:</p>
22 <ul><li>установить его на компьютер;</li>
22 <ul><li>установить его на компьютер;</li>
23 <li>воспользоваться облачным сервисом Google Colab.</li>
23 <li>воспользоваться облачным сервисом Google Colab.</li>
24 </ul><p>В начале можно попробовать второй вариант, потому что для него не нужно ничего скачивать - всё хранится и работает в облаке. К тому же вычисления не нуждаются в мощностях вашего компьютера, вместо этого используются серверы Google.</p>
24 </ul><p>В начале можно попробовать второй вариант, потому что для него не нужно ничего скачивать - всё хранится и работает в облаке. К тому же вычисления не нуждаются в мощностях вашего компьютера, вместо этого используются серверы Google.</p>
25 <p>Заходим на сайт<a>Google Colab</a>и создаём новый<strong>notebook</strong>:</p>
25 <p>Заходим на сайт<a>Google Colab</a>и создаём новый<strong>notebook</strong>:</p>
26 Создаём новое пространство<em>Скриншот: Skillbox Media</em><p>У нас появится новое пространство, в котором мы и будем писать весь код. Сверху слева можно изменить название документа:</p>
26 Создаём новое пространство<em>Скриншот: Skillbox Media</em><p>У нас появится новое пространство, в котором мы и будем писать весь код. Сверху слева можно изменить название документа:</p>
27 Мы создали новый документ. Его можно переименовать сверху слева, если нужно<em>Скриншот: Skillbox Media</em><p>Google Colab состоит из ячеек с кодом или текстом. Чтобы создать ячейку с кодом, нужно нажать на кнопку<strong>+ Code</strong>. Ниже появится ячейка, где можно писать Python‑код:</p>
27 Мы создали новый документ. Его можно переименовать сверху слева, если нужно<em>Скриншот: Skillbox Media</em><p>Google Colab состоит из ячеек с кодом или текстом. Чтобы создать ячейку с кодом, нужно нажать на кнопку<strong>+ Code</strong>. Ниже появится ячейка, где можно писать Python‑код:</p>
28 Создаём ячейку с кодом. Рекомендуем запомнить горячие клавиши<em>Скриншот: Skillbox Media</em><p>Теперь нам нужно проверить, что всё работает. Для этого попробуем экспортировать библиотеку в Google Colab. Делается это через команду import tensorflow as tf:</p>
28 Создаём ячейку с кодом. Рекомендуем запомнить горячие клавиши<em>Скриншот: Skillbox Media</em><p>Теперь нам нужно проверить, что всё работает. Для этого попробуем экспортировать библиотеку в Google Colab. Делается это через команду import tensorflow as tf:</p>
29 Мы импортировали библиотеку TensorFlow. Зелёная галочка слева означает, что всё работает<em>Скриншот: Skillbox Media</em><p>Всё готово. Рассмотрим второй способ, как можно подключить TensorFlow прямо на компьютере.</p>
29 Мы импортировали библиотеку TensorFlow. Зелёная галочка слева означает, что всё работает<em>Скриншот: Skillbox Media</em><p>Всё готово. Рассмотрим второй способ, как можно подключить TensorFlow прямо на компьютере.</p>
30 <p>Чтобы использовать библиотеку TensorFlow на компьютере, её нужно установить через пакетный менеджер PIP.</p>
30 <p>Чтобы использовать библиотеку TensorFlow на компьютере, её нужно установить через пакетный менеджер PIP.</p>
31 <p>Открываем терминал и вводим следующую команду:</p>
31 <p>Открываем терминал и вводим следующую команду:</p>
32 pip install --upgrade pip<p>Мы обновили PIP до последней версии. Теперь скачиваем сам TensorFlow:</p>
32 pip install --upgrade pip<p>Мы обновили PIP до последней версии. Теперь скачиваем сам TensorFlow:</p>
33 pip install tensorflow<p>Если всё прошло успешно, теперь вы можете подключать TensorFlow в Python-коде у вас на компьютере с помощью команды:</p>
33 pip install tensorflow<p>Если всё прошло успешно, теперь вы можете подключать TensorFlow в Python-коде у вас на компьютере с помощью команды:</p>
34 import tensorflow as tf<p>Но если возникли какие-то ошибки, можете прочитать более подробный гайд на <a>официальном сайте TensorFlow</a>и убедиться, что у вас скачаны все нужные пакеты.</p>
34 import tensorflow as tf<p>Но если возникли какие-то ошибки, можете прочитать более подробный гайд на <a>официальном сайте TensorFlow</a>и убедиться, что у вас скачаны все нужные пакеты.</p>
35 <p>Ниже мы будем использовать Google Colab для примеров, но код должен работать одинаково и корректно где угодно.</p>
35 <p>Ниже мы будем использовать Google Colab для примеров, но код должен работать одинаково и корректно где угодно.</p>
36 <p>Допустим, у нас есть два набора чисел X и Y:</p>
36 <p>Допустим, у нас есть два набора чисел X и Y:</p>
37 X: -1 0 1 2 3 4 Y: -4 1 6 11 16 21<p>Мы видим, что их значения связаны по какому-то правилу. Это правило: Y = 5X + 1. Но чтобы компьютер это понял, ему нужно научиться сопоставлять входные данные - X - с результатом - Y. У него сначала могут получаться странные уравнения типа: 2X - 5, 8X + 1, 4X + 2, 5X - 1. Но, обучившись немного, он найдёт наиболее близкую к исходной формулу.</p>
37 X: -1 0 1 2 3 4 Y: -4 1 6 11 16 21<p>Мы видим, что их значения связаны по какому-то правилу. Это правило: Y = 5X + 1. Но чтобы компьютер это понял, ему нужно научиться сопоставлять входные данные - X - с результатом - Y. У него сначала могут получаться странные уравнения типа: 2X - 5, 8X + 1, 4X + 2, 5X - 1. Но, обучившись немного, он найдёт наиболее близкую к исходной формулу.</p>
38 <p>Обучается нейросеть итеративно - или поэтапно. На каждой итерации она будет предлагать алгоритм, по которому входные значения сопоставляются с результатом. Затем она проверит свои предположения, вычислив все входные данные по формуле и сравнив с настоящими результатами. Так она узнает, насколько сильно ошиблась. И уже на основе этих ошибок скорректирует формулу на следующей итерации.</p>
38 <p>Обучается нейросеть итеративно - или поэтапно. На каждой итерации она будет предлагать алгоритм, по которому входные значения сопоставляются с результатом. Затем она проверит свои предположения, вычислив все входные данные по формуле и сравнив с настоящими результатами. Так она узнает, насколько сильно ошиблась. И уже на основе этих ошибок скорректирует формулу на следующей итерации.</p>
39 <p>Количество итераций ограничено разве что временем разработчика. Главное - чтобы нейросеть на каждом шаге улучшала свои предположения, иначе весь процесс обучения будет бессмысленным.</p>
39 <p>Количество итераций ограничено разве что временем разработчика. Главное - чтобы нейросеть на каждом шаге улучшала свои предположения, иначе весь процесс обучения будет бессмысленным.</p>
40 <p>Теперь давайте создадим модель, которая научится решать поставленную выше задачу. Сперва подключим необходимые зависимости:</p>
40 <p>Теперь давайте создадим модель, которая научится решать поставленную выше задачу. Сперва подключим необходимые зависимости:</p>
41 import tensorflow as tf import numpy as np from tensorflow import keras<p>Первая зависимость - это наша библиотека<strong>TensorFlow</strong>, название которой мы сокращаем до tf, чтобы было удобнее её вызывать в программе.<strong>NumPy</strong> - это библиотека для эффективной работы с массивами чисел. Можно было, конечно, использовать и обычные списки, но NumPy будет работать намного быстрее, поэтому мы берём его. И последнее -<strong>Keras</strong>, встроенная в Tensorflow библиотека, которая умеет обучать нейросети.</p>
41 import tensorflow as tf import numpy as np from tensorflow import keras<p>Первая зависимость - это наша библиотека<strong>TensorFlow</strong>, название которой мы сокращаем до tf, чтобы было удобнее её вызывать в программе.<strong>NumPy</strong> - это библиотека для эффективной работы с массивами чисел. Можно было, конечно, использовать и обычные списки, но NumPy будет работать намного быстрее, поэтому мы берём его. И последнее -<strong>Keras</strong>, встроенная в Tensorflow библиотека, которая умеет обучать нейросети.</p>
42 <p>Теперь создадим самую простую модель:</p>
42 <p>Теперь создадим самую простую модель:</p>
43 model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])<p>Разберём код подробнее.<strong>Sequential</strong>- это тип нейросети, означающий, что процесс обучения будет последовательным. Это стандартный процесс обучения для простых нейросетей: в нём она сначала делает предсказания, затем тестирует их и сравнивает с результатом, а в конце - корректирует ошибки.</p>
43 model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])<p>Разберём код подробнее.<strong>Sequential</strong>- это тип нейросети, означающий, что процесс обучения будет последовательным. Это стандартный процесс обучения для простых нейросетей: в нём она сначала делает предсказания, затем тестирует их и сравнивает с результатом, а в конце - корректирует ошибки.</p>
44 <p>keras.layers.Dense - указывает на то, что мы хотим создать слой в нашей модели.<strong>Слой</strong> - это место, куда мы будем складывать нейроны, которые запоминают информацию об ошибках и которые отвечают за "умственные способности" нейросети.<strong>Dense</strong> - это тип слоя, который использует специальные алгоритмы для обучения.</p>
44 <p>keras.layers.Dense - указывает на то, что мы хотим создать слой в нашей модели.<strong>Слой</strong> - это место, куда мы будем складывать нейроны, которые запоминают информацию об ошибках и которые отвечают за "умственные способности" нейросети.<strong>Dense</strong> - это тип слоя, который использует специальные алгоритмы для обучения.</p>
45 <p>В качестве аргумента нашей нейросети мы передали указания, какой именно она должна быть:</p>
45 <p>В качестве аргумента нашей нейросети мы передали указания, какой именно она должна быть:</p>
46 <ul><li>units=1 означает, что модель состоит из одного нейрона, который будет запоминать информацию о предыдущих предположениях;</li>
46 <ul><li>units=1 означает, что модель состоит из одного нейрона, который будет запоминать информацию о предыдущих предположениях;</li>
47 <li>input_shape=[1] говорит о том, что на вход будет подаваться одно число, по которому нейросеть будет строить зависимости двух рядов чисел: X и Y.</li>
47 <li>input_shape=[1] говорит о том, что на вход будет подаваться одно число, по которому нейросеть будет строить зависимости двух рядов чисел: X и Y.</li>
48 </ul><p>Модель мы создали, теперь давайте её скомпилируем:</p>
48 </ul><p>Модель мы создали, теперь давайте её скомпилируем:</p>
49 model.compile(optimizer='sgd', loss='mean_squared_error')<p>Здесь появляются два важных для машинного обучения элемента: функция оптимизации и функция потерь. Обе они нужны, чтобы постепенно стремиться к более точным результатам.</p>
49 model.compile(optimizer='sgd', loss='mean_squared_error')<p>Здесь появляются два важных для машинного обучения элемента: функция оптимизации и функция потерь. Обе они нужны, чтобы постепенно стремиться к более точным результатам.</p>
50 <p>Функция потерь анализирует, насколько правильно нейросеть дала предсказание. А функция оптимизации исправляет эти предсказания в сторону более корректных результатов.</p>
50 <p>Функция потерь анализирует, насколько правильно нейросеть дала предсказание. А функция оптимизации исправляет эти предсказания в сторону более корректных результатов.</p>
51 <p>Мы использовали стандартные функции для большинства моделей - sgd и mean_squared_error. sgd - это метод оптимизации, который работает на формулах математического анализа. Он помогает скорректировать формулу, чтобы прийти к правильной. mean_squared_error - это функция, которая вычисляет, насколько сильно отличаются полученные результаты по формуле, предложенной нейросетью, от настоящих результатов. Эта функция тоже участвует в корректировке формулы.</p>
51 <p>Мы использовали стандартные функции для большинства моделей - sgd и mean_squared_error. sgd - это метод оптимизации, который работает на формулах математического анализа. Он помогает скорректировать формулу, чтобы прийти к правильной. mean_squared_error - это функция, которая вычисляет, насколько сильно отличаются полученные результаты по формуле, предложенной нейросетью, от настоящих результатов. Эта функция тоже участвует в корректировке формулы.</p>
52 <p>Теперь давайте зададим наборы данных:</p>
52 <p>Теперь давайте зададим наборы данных:</p>
53 xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-4.0, 1.0, 6.0, 11.0, 16.0, 21.0], dtype=float)<p>Как видно, это обычные массивы чисел, которые мы передадим модели на обучение:</p>
53 xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-4.0, 1.0, 6.0, 11.0, 16.0, 21.0], dtype=float)<p>Как видно, это обычные массивы чисел, которые мы передадим модели на обучение:</p>
54 model.fit(xs, ys, epochs=500)<p>Функция fit как раз занимается обучением. Она берёт набор входных данных - xs - и сопоставляет с набором правильных результатов - ys. И так нейросеть обучается в течение 500 итераций - epochs=500. Мы использовали 500 итераций, чтобы наверняка прийти к правильному результату. Суть простая: чем больше итераций обучения, тем точнее будут результаты (однако улучшение точности с каждым повтором будет всё меньше и меньше).</p>
54 model.fit(xs, ys, epochs=500)<p>Функция fit как раз занимается обучением. Она берёт набор входных данных - xs - и сопоставляет с набором правильных результатов - ys. И так нейросеть обучается в течение 500 итераций - epochs=500. Мы использовали 500 итераций, чтобы наверняка прийти к правильному результату. Суть простая: чем больше итераций обучения, тем точнее будут результаты (однако улучшение точности с каждым повтором будет всё меньше и меньше).</p>
55 <p>На каждой итерации модель проходит следующие шаги:</p>
55 <p>На каждой итерации модель проходит следующие шаги:</p>
56 <ul><li>берёт весь наш набор входных данных;</li>
56 <ul><li>берёт весь наш набор входных данных;</li>
57 <li>пытается сделать предсказание для каждого элемента;</li>
57 <li>пытается сделать предсказание для каждого элемента;</li>
58 <li>сравнивает результат с корректным результатом;</li>
58 <li>сравнивает результат с корректным результатом;</li>
59 <li>оптимизирует модель, чтобы давать более точные прогнозы.</li>
59 <li>оптимизирует модель, чтобы давать более точные прогнозы.</li>
60 </ul>После того как вы запустите предыдущую строчку кода, модель начнёт обучение<em>Скриншот: Skillbox Media</em><p>Можно заметить, что на каждой итерации TensorFlow выводит, насколько нейросеть сильно ошиблась - loss. Если это число уменьшается, то есть стремится к нулю, значит, она действительно обучается и с каждым шагом улучшает свои прогнозы.</p>
60 </ul>После того как вы запустите предыдущую строчку кода, модель начнёт обучение<em>Скриншот: Skillbox Media</em><p>Можно заметить, что на каждой итерации TensorFlow выводит, насколько нейросеть сильно ошиблась - loss. Если это число уменьшается, то есть стремится к нулю, значит, она действительно обучается и с каждым шагом улучшает свои прогнозы.</p>
61 <p>Теперь давайте что-нибудь предскажем и поймём, насколько точно наша нейросеть обучилась:</p>
61 <p>Теперь давайте что-нибудь предскажем и поймём, насколько точно наша нейросеть обучилась:</p>
62 print(model.predict([10.0]))<p>Мы вызываем у модели метод predict, который получает на вход элемент для предсказания. Результат будет таким:</p>
62 print(model.predict([10.0]))<p>Мы вызываем у модели метод predict, который получает на вход элемент для предсказания. Результат будет таким:</p>
63 Модель сделала предсказание, но оно оказалось не совсем точным<em>Скриншот: Skillbox Media</em><p>Получилось странно - мы ожидали, что будет число 51 (потому что подставили 10 в выражение 5X + 1) - но на выходе нейросеть выдала число 50.98739. А всё потому, что модель нашла очень близкую, но не до конца точную формулу - например, 4.891X + 0.993. Это одна из особенностей машинного обучения.</p>
63 Модель сделала предсказание, но оно оказалось не совсем точным<em>Скриншот: Skillbox Media</em><p>Получилось странно - мы ожидали, что будет число 51 (потому что подставили 10 в выражение 5X + 1) - но на выходе нейросеть выдала число 50.98739. А всё потому, что модель нашла очень близкую, но не до конца точную формулу - например, 4.891X + 0.993. Это одна из особенностей машинного обучения.</p>
64 <p>А ещё многое зависит от выбранного метода оптимизации - то есть того, как нейросеть корректирует формулу, чтобы прийти к нужным результатам. В библиотеке TensorFlow можно найти разные способы оптимизации, и на выходе каждой из них результаты могут различаться. Однако эта тема выходит за рамки нашей статьи - здесь уже необходимо достаточно глубоко погружаться в процесс машинного обучения и разбираться, как именно устроена оптимизация.</p>
64 <p>А ещё многое зависит от выбранного метода оптимизации - то есть того, как нейросеть корректирует формулу, чтобы прийти к нужным результатам. В библиотеке TensorFlow можно найти разные способы оптимизации, и на выходе каждой из них результаты могут различаться. Однако эта тема выходит за рамки нашей статьи - здесь уже необходимо достаточно глубоко погружаться в процесс машинного обучения и разбираться, как именно устроена оптимизация.</p>
65 <p>Если вы вдруг подумали, что можно просто увеличить число итераций и точность станет выше, то это справедливо лишь отчасти. У каждого метода оптимизации есть своя точность, до которой нейросеть может дойти. Например, она может вычислять результат с точностью до 0.00000001, однако абсолютно верным и точным результат не будет никогда. А значит, и абсолютно точного значения формулы мы никогда не получим - просто из-за погрешности вычислений и особенности функционирования компьютеров. Но если условно установить число итераций в миллиард, можно получить примерно такую формулу:</p>
65 <p>Если вы вдруг подумали, что можно просто увеличить число итераций и точность станет выше, то это справедливо лишь отчасти. У каждого метода оптимизации есть своя точность, до которой нейросеть может дойти. Например, она может вычислять результат с точностью до 0.00000001, однако абсолютно верным и точным результат не будет никогда. А значит, и абсолютно точного значения формулы мы никогда не получим - просто из-за погрешности вычислений и особенности функционирования компьютеров. Но если условно установить число итераций в миллиард, можно получить примерно такую формулу:</p>
66 <p>4.9999999999997X + 0.9999999999991</p>
66 <p>4.9999999999997X + 0.9999999999991</p>
67 <p>Она очень близка к настоящей, хотя и не равна ей. Поэтому математики и специалисты по машинному обучению решили, что будут считать две формулы равными, если значения их вычислений меньше, чем заранее заданная величина погрешности - например, 0.0000001. И если мы подставим в формулу выше и в настоящую вместо X число 5, то получим следующее:</p>
67 <p>Она очень близка к настоящей, хотя и не равна ей. Поэтому математики и специалисты по машинному обучению решили, что будут считать две формулы равными, если значения их вычислений меньше, чем заранее заданная величина погрешности - например, 0.0000001. И если мы подставим в формулу выше и в настоящую вместо X число 5, то получим следующее:</p>
68 <p>5 · 5 + 1 = 26</p>
68 <p>5 · 5 + 1 = 26</p>
69 <p>4.9999999997 · 5 + 0.9999999991 = 25.9999999976</p>
69 <p>4.9999999997 · 5 + 0.9999999991 = 25.9999999976</p>
70 <p>Если мы из первого числа вычтем второе, то получим:</p>
70 <p>Если мы из первого числа вычтем второе, то получим:</p>
71 <p>26 - 25.9999999976 = 0.0000000024</p>
71 <p>26 - 25.9999999976 = 0.0000000024</p>
72 <p>А так как изначально мы сказали, что два числа будут равны, если разница между ними меньше 0.0000001, то обе формулы могут считаться идентичными, потому что получившаяся у нас на практике погрешность 0.0000000024 меньше допустимого значения, о котором мы договорились, - то есть 0.0000001. Вот такая интересная математика.</p>
72 <p>А так как изначально мы сказали, что два числа будут равны, если разница между ними меньше 0.0000001, то обе формулы могут считаться идентичными, потому что получившаяся у нас на практике погрешность 0.0000000024 меньше допустимого значения, о котором мы договорились, - то есть 0.0000001. Вот такая интересная математика.</p>
73 <ul><li>Библиотека TensorFlow - это инструмент для создания и обучения нейросетей. При этом вам не нужно углублённо знать высшую математику, чтобы писать простые модели.</li>
73 <ul><li>Библиотека TensorFlow - это инструмент для создания и обучения нейросетей. При этом вам не нужно углублённо знать высшую математику, чтобы писать простые модели.</li>
74 <li>Машинное обучение - это когда мы даём компьютеру входные данные и результаты и просим его понять между ними зависимость. Нам неважно, как он до этого додумается. Главное - точность.</li>
74 <li>Машинное обучение - это когда мы даём компьютеру входные данные и результаты и просим его понять между ними зависимость. Нам неважно, как он до этого додумается. Главное - точность.</li>
75 <li>Обучение нейросети проходит в три этапа: подготовка данных, создание и компиляция модели, само обучение.</li>
75 <li>Обучение нейросети проходит в три этапа: подготовка данных, создание и компиляция модели, само обучение.</li>
76 </ul><a>Курс с трудоустройством: "Профессия Data scientist + ИИ" Узнать о курсе</a>
76 </ul><a>Курс с трудоустройством: "Профессия Data scientist + ИИ" Узнать о курсе</a>