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>