
Полная версия
Цифровая трансформация промышленных предприятий
Для того чтобы манипулировать всевозможными знаниями о реальном мире с помощью компьютера, необходимо сначала представить их в виде, пригодном для использования на компьютере. С помощью ИИ автоматизируют работу, повышают эффективность и решают сложные задачи в разных областях.
Искусственный интеллект может помочь человеку в следующем.
1.Автоматизировать рутинные процессы. ИИ экономит время и ресурсы человека. Например, чат-боты в службах поддержки заменяют операторов — они обрабатывают стандартные запросы.
2.Обрабатывать большие данные. ИИ способен анализировать огромные объемы информации и находить закономерности, которые трудно обнаружить человеку. Например, в маркетинге ИИ анализирует поведение пользователей и предлагает персонализированные рекомендации.
3.Улучшать точность и скорость. ИИ используют там, где нужны высокая точность и скорость принятия решений. В медицине системы на базе искусственного интеллекта помогают диагностировать заболевания — они изучают снимки и результаты анализов.
4.Повышать удобство и качество жизни. ИИ внедряют в бытовую технику, транспорт, приложения и устройства. Это делает их более умными и удобными. Например, умные дома с голосовыми ассистентами управляют освещением, температурой и безопасностью.
5.Развивать инновации. ИИ открывает новые возможности в науке, технике и других областях. Например, с его помощью быстрее разрабатывают новые лекарства.
6.Оптимизировать производства. Роботы на производственных линиях повышают производительность и снижают затраты.
Принципы работы искусственного интеллекта включают в себя машинное обучение, нейронные сети и обработку естественного языка, что делает эту технологию все более востребованной и эффективной в различных сферах деятельности.
Одним из основных принципов работы искусственного интеллекта является машинное обучение. Этот процесс позволяет программам и системам самостоятельно учиться на основе опыта и данных, что делает их все более эффективными и точными в выполнении задач.
Другим важным принципом является нейронные сети, которые представляют собой модель обработки информации по принципу работы человеческого мозга. Нейронные сети позволяют искусственному интеллекту анализировать данные, выявлять закономерности и делать предсказания на основе полученных знаний.
Нейросети — это один из подходов к созданию ИИ, который вдохновлён системой нейронов в мозге. Вместо того чтобы писать сложные алгоритмы для решения задач, нейросети обучаются на основе большого количества данных и находят в них закономерности. Чтобы работать с нейросетями, не нужно быть учёным. Например, можно освоить профессию инженера машинного обучения. Он работает с данными и создаёт на их основе алгоритмы машинного обучения, которые помогают решать прикладные задачи.
ИИ можно разделить на несколько подкатегорий, таких как машинное обучение, глубокое обучение, обработка естественного языка (NLP) и компьютерное зрение. Машинное обучение включает в себя создание алгоритмов, которые могут обучаться на данных и делать прогнозы или принимать решения без явного программирования. Глубокое обучение, в свою очередь, является подкатегорией машинного обучения и использует нейронные сети для анализа данных и принятия решений.
Обработка естественного языка (NLP) занимается взаимодействием между компьютерами и человеческим языком, что позволяет системам ИИ понимать, интерпретировать и генерировать человеческий язык. Компьютерное зрение, с другой стороны, фокусируется на анализе и интерпретации визуальной информации из окружающего мира.
Базовые направления в рамках искусственного интеллекта и их соотношения представлены на рис. 1.1. Еще одним ключевым принципом является обработка естественного языка. С помощью алгоритмов искусственного интеллекта системы могут понимать и обрабатывать человеческую речь, а также генерировать тексты и отвечать на вопросы, что является важным в различных областях, включая бизнес.

Рис.1.1. Соотношение базовых направлений в рамках искусственного интеллекта
Система искусственного интеллекта принимает входные данные в виде речи, текста, изображения, а затем обрабатывает их, применяя различные правила и алгоритмы. После обработки система выдает результат, т. е. успех или неудачу, при вводе данных. Затем результат оценивается посредством анализа, открытия и обратной связи. Наконец, система использует свои оценки для корректировки входных данных, правил и алгоритмов, а также целевых результатов. Этот цикл продолжается до тех пор, пока не будет достигнут желаемый результат.
Когнитивные вычисления направлены на воссоздание мыслительного процесса человека в компьютерной модели. Технология стремится имитировать логику работы человеческого сознания и улучшить взаимодействие между людьми и машинами. Это происходит, например, через распознавание ИИ человеческого языка и значения изображений для последующего самообучения. Реализовать систему когнитивных вычислений сегодня возможно только в таких сложных машинах, как суперкомпьютер IBM Watson.
ГЛАВА 2. НЕЙРОННЫЕ СЕТИ
Нейронные сети - это модель, вдохновленная работой человеческого мозга. Они состоят из множества связанных между собой искусственных нейронов, которые обрабатывают информацию и принимают решения на основе полученных данных
Нейронная сеть — это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Нейронные сети также способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти. Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов, передающих информацию в виде электрических импульсов.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения— одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными и выходными данными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумлённых», частично искажённых данных.
Компоненты нейросети:
1. Нейроны. Аналогичные нервным клеткам в мозге, они первыми обрабатывают данные и передают информацию дальше.
2.Весовые коэффициенты. Эти параметры определяют, какое значение придается каждому входному сигналу.
3.Слои. Каждая нейросеть состоит из трех основных типов слоев.
Входной слой- — отвечает за получение исходных данных, таких как изображения, текст или числовые значения. Картинка раскладывается на пиксели, каждый из которых поступает на отдельный нейрон.
Скрытые слои-— выполняют основную работу по обработке информации. В этих слоях происходит множество вычислений, которые трансформируют входные данные и создают более сложные представления. Чем больше скрытых слоев, тем сложнее задачи может решать нейросеть.
Выходной слой— предоставляет конечный результат. Например, это может быть классификация изображения (что изображено на фото) или предсказание (какие тренды ожидаются в будущем).
Эти слои соединены между собой, создавая сложную сеть связей. Каждый нейрон скрытого слоя связан с несколькими нейронами предыдущего и следующего слоев, что позволяет им обрабатывать информацию на различных уровнях абстракции.
Также есть нейрон смещения и контекстный нейрон. Нейрон смещения или bias нейрон используется в большинстве нейросетей. Особенность этого типа нейронов заключается в том, что его вход и выход всегда равняются 1 и они никогда не имеют входных синапсов. Нейроны смещения могут, либо присутствовать в нейронной сети по одному на слое, либо полностью отсутствовать, 50/50 быть не может. Соединения у нейронов смещения такие же, как у обычных нейронов — со всеми нейронами следующего уровня, за исключением того, что синапсов между двумя bias нейронами быть не может. Следовательно, их можно размещать на входном слое и всех скрытых слоях, но никак не на выходном слое, так как им попросту не с чем будет формировать связь.
Нейрон смещения нужен для того, чтобы иметь возможность получать выходной результат, путем сдвига графика функции активации вправо или влево.
Синапс-это связь между двумя нейронами. У синапсов есть 1 параметр — вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему, тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример — смешение цветов). На самом деле, совокупность весов нейронной сети или матрица весов — это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат. Важно помнить, что во время инициализации нейронной сети, веса расставляются в случайном порядке.
Теперь, чтобы понять, как же работают нейронные сети, давайте взглянем на ее составляющие, рис.2.1. и их параметры. Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше.

Рис.2.1. Схема передачи информации
Рассмотрим пример, рис. 2.2, где изображена часть нейронной сети, и буквами I обозначены входные нейроны, буквой H — скрытый нейрон, а буквой w — веса.
Из формулы видно, что входная информация — это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4.
Теперь, когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Затем, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть, в первый раз мы увидим, что ответ далек от правильного, потому что сеть не натренирована.

Рис.2.2. Часть нейронной сети
Чтобы улучшить результаты мы будем ее тренировать. Но прежде, чем узнать, как это делать, давайте введем несколько терминов и свойств нейронной сети.
Модель внутренней структуры искусственного нейрона представлена на рис.2.3.

Рис. 2.3. Модель внутренней структуры искусственного нейрона
У каждого нейрона, в том числе и у искусственного, должны быть какие-то входы, через которые он принимает сигнал. Поступившие на входы сигналы умножаются на свои веса. Сигнал первого входа x1 умножается на соответствующий этому входу вес w1. В итоге получаем x1w1. И так до n-ого входа. В итоге на последнем входе получаем xnwn.
Теперь все произведения передаются в сумматор. Он просто суммирует все входные сигналы, умноженные на соответствующие веса:
x1w1+x2w2+⋯+xnwn=∑i=1nxiwi
Когда необходимо коротко записать большое выражение, состоящее из суммы повторяющихся/однотипных членов, то используют знак сигмы.
Рассмотрим простейший вариант записи:
∑i=15i=1+2+3+4+5
Таким образом снизу сигмы мы присваиваем переменной-счетчику I стартовое значение, которое будет увеличиваться, пока не дойдет до верхней границы (в примере выше это 5).
Верхняя граница может быть и переменной. Приведу пример такого случая. Пусть у нас есть n магазинов. У каждого магазина есть свой номер: от 1 до n. Каждый магазин приносит прибыль. Возьмем какой-то (неважно, какой) I -ый магазин. Прибыль от него равна pi. Если мы хотим посчитать общую прибыль от всех магазинов (обозначим ее за P), то нам пришлось бы писать длинную сумму:
P=p1+p2+⋯+pi+⋯+pn
Как видно, все члены этой суммы однотипны. Тогда их можно коротко записать следующим образом:
P=∑i=1npi
Словами: «Просуммируй прибыли всех магазинов, начиная с первого и заканчивая n-ым». В виде формулы это гораздо проще, удобнее и красивее.
Результатом работы сумматора является число, называемое взвешенной суммой. Взвешенная сумма (net) — сумма входных сигналов, умноженных на соответствующие им веса.
net=∑i=1nxiwi
Роль сумматора очевидна– он агрегирует все входные сигналы (которых может быть много) в какое-то одно число – взвешенную сумму, которая характеризует поступивший на нейрон сигнал в целом.
Для понимания роли последнего компонента искусственного нейрона –функции активации –рассмотрим следующий пример. У одного искусственного нейрона задача– решить, ехать ли отдыхать на море. Для этого на его входы мы подаем различные данные. Пусть у нашего нейрона будет 4 входа:
-стоимость поездки;
-какая на море погода;
-текущая обстановка с работой;
-будет ли на пляже закусочная
Все эти параметры будем характеризовать 0 или 1. Соответственно, если погода на море хорошая, то на этот вход подаем 1. И так со всеми остальными параметрами.
Если у нейрона есть четыре входа, то должно быть и четыре весовых коэффициента. В нашем примере весовые коэффициенты можно представить как показатели важности каждого входа, влияющие на общее решение нейрона. Веса входов распределим следующим образом:5,4,1,1.
Нетрудно заметить, что очень большую роль играют факторы стоимости и погоды на море (первые два входа). Они же и будут играть решающую роль при принятии нейроном решения. Пусть на входы нашего нейрона мы подаем следующие сигналы:1,0,0,1. Умножаем веса входов на сигналы соответствующих входов:5,0,0,1. Взвешенная сумма для такого набора входных сигналов равна 6:
net=∑i=14xiwi=5+0+0+1=6
Как нейрон должен решить, ехать на море или нет? Очевидно, нам нужно как-то преобразовать нашу взвешенную сумму и получить ответ. Это позволит выполнить функция активации. Функция активации является фундаментальной составляющей нейронных сетей, и понимание принципов работы, а также областей применения, способствует созданию более эффективных сетей.
Функция активации преобразует входные данные в выходные для их последующей передачи на следующий слой. Эти функции определяют, должен ли нейрон быть активирован или нет, основываясь на взвешенной сумме его входов плюс смещение. Без функций активации нейронные сети были бы просто линейными моделями, неспособными решать сложные задачи, такие как распознавание образов, обработка естественного языка и другие передовые приложения ИИ. В модель нейрона добавляется нелинейный преобразователь, который реализует нелинейную функцию, которая называется функцией активации. По сути, нейрон представляет собой элементарный вычислитель, характеризующийся входным/выходным состоянием и функцией активации. На основе элементарных вычислителей, каждый из которых получает сигналы и посылает другим вычислителям, составляются ИНС разной топологии.
Функция активации определяет, следует ли активировать нейрон, вычисляя взвешенную сумму входных данных и добавляя смещение. Это помогает модели принимать сложные решения и делать прогнозы, вводя нелинейности в выходные данные каждого нейрона. Эта нелинейность позволяет сети изучать более сложные закономерности, которые невозможно изучить с помощью чисто линейной модели, например:
-моделирование функций, которые не являются линейно разделяемыми;
-увеличение способности сети формировать несколько границ принятия решений на основе комбинации весовых коэффициентов и смещений.
В процессе обучения эти весовые коэффициенты и смещения обновляются на основе ошибки, возникающей на выходе процесс известен как обратное распространение ошибки. Функции активации обеспечивают обратное распространение ошибки, предоставляя градиенты, необходимые для обновления весовых коэффициентов и смещений.
Без нелинейности даже глубокие сети были бы ограничены решением только простых, линейно разделяемых задач. Функции активации позволяют нейронным сетям моделировать очень сложные распределения данных и решать сложные задачи глубокого обучения. Добавление функций нелинейной активации обеспечивает гибкость и позволяет сети извлекать из данных более сложные и абстрактные шаблоны.
Для разных типов искусственных нейронов используют самые разные функции активации. Далее мы подробно рассмотрим самые известные функции активации.
1.Функция единичного скачка-самый простой вид функции активации. Выход нейрона может быть равен только 0 или 1. Если взвешенная сумма больше определенного порога b, то выход нейрона равен 1. Если ниже, то 0. Как ее можно использовать? Предположим, что мы поедем на море только тогда, когда взвешенная сумма больше или равна 5. Значит наш порог равен 5. В нашем примере взвешенная сумма равнялась 6, а значит выходной сигнал нашего нейрона равен 1. Итак, мы едем на море. Однако, если бы погода на море была бы плохой, а также поездка была бы очень дорогой, но имелась бы закусочная и обстановка с работой нормальная (входы: 0011), то взвешенная сумма равнялась бы 2, а значит выход нейрона равнялся бы 0. Итак, мы никуда не едем.
В общем, нейрон смотрит на взвешенную сумму и если она получается больше его порога, то нейрон выдает выходной сигнал, равный 1.
Графически эту функцию активации можно изобразить следующим образом, рис.2.4.
На горизонтальной оси расположены величины взвешенной суммы. На вертикальной оси — значения выходного сигнала. Как легко видеть, возможны только два значения выходного сигнала: 0 или 1. Если взвешенная сумма равна порогу или больше него, то функция выдает 1. Все предельно просто.

Рис.2.4. Функция единичного скачка
Теперь, запишем эту функцию активации математически. Почти наверняка вы сталкивались с таким понятием, как составная функция. Это когда мы под одной функцией объединяем несколько правил, по которым рассчитывается ее значение. В виде составной функции функция единичного скачка будет выглядеть следующим образом:
out(net)={0,net В этой записи нет ничего сложного. Выход нейрона (out) зависит от взвешенной суммы (net) следующим образом: если net (взвешенная сумма) меньше какого-то порога (b), то out (выход нейрона) равен 0. А если net больше или равен порогу b, то out равен 1. 2. Логистическая функция. На самом деле существует целое семейство сигмоидальных функций, некоторые из которых применяют в качестве функции активации в искусственных нейронах. Все эти функции обладают некоторыми очень полезными свойствами, ради которых их и применяют в нейронных сетях. Эти свойства станут очевидными после того, как вы увидите графики этих функций. Самая часто используемая в нейронных сетях сигмоида —логистическая функция, рис.2.5. График этой функции выглядит достаточно просто. Если присмотреться, то можно увидеть некоторое подобие английской буквы S, откуда и пошло название семейства этих функций. А вот так она записывается аналитически: out(net)=11+exp(−a⋅net) Параметр “a”-это число, которое характеризует степень крутизны функции. На рис. 6.6 представлены логистические функции с разным параметром a. Вспомним наш искусственный нейрон, определяющий, надо ли ехать на море. В случае с функцией единичного скачка все было очевидно. Мы либо едем на море (1), либо нет (0). Здесь же случай более приближенный к реальности. Мы до конца полностью не уверены. Тогда использование логистической функции в качестве функции активации приведет к тому, что вы будете получать цифру между 0 и 1. Причем чем больше взвешенная сумма, тем ближе выход будет к 1 (но никогда не будет точно ей равен). И наоборот, чем меньше взвешенная сумма, тем ближе выход нейрона будет к 0. Например, выход нашего нейрона равен 0.8. Это значит, что он считает, что поехать на море все-таки стоит. Если бы его выход был бы равен 0.2, то это означает, что он почти наверняка против. Рис.2.5. Логистическая функция (разные а) Логистическая функция имеет следующие свойства: -она является «сжимающей» функцией, то есть вне зависимости от аргумента (взвешенной суммы), выходной сигнал всегда будет в пределах от 0 до 1; -она более гибкая, чем функция единичного скачка – ее результатом может быть не только 0 и 1, но и любое число между ними; -во всех точках она имеет производную, и эта производная может быть выражена через эту же функцию. Именно из-за этих свойств логистическая функция чаще всего используются в качестве функции активации в искусственных нейронах. 3. Гиперболический тангенс. Он применяется в качестве функции активации биологами для более реалистичной модели нервной клетки. Такая функция позволяет получить на выходе значения разных знаков (например, от -1 до 1), что может быть полезным для ряда сетей. Функция записывается следующим образом: out(net)=tanh(neta) В формуле параметр a также определяет степень крутизны графика этой функции. График этой функции выглядит следующим образом, рис.2.6. 



Рис.2.6 Гиперболический тангенс
Гиперболический тангенс обладает всеми полезными свойствами, которые имеет и логистическая функция.
4.Тренировочный сет — это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода, то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.
5.Итерация. Это своеобразный счетчик, который увеличивается каждый раз, когда нейронная сеть проходит один тренировочный сет. Другими словами, это общее количество тренировочных сетов, пройденных нейронной сетью.
6.Эпоха. При инициализации нейронной сети эта величина устанавливается в 0 и имеет потолок, задаваемый вручную. Чем больше эпоха, тем лучше натренирована сеть и соответственно, ее результат. Эпоха увеличивается каждый раз, когда мы проходим весь набор тренировочных сетов, в нашем случае, 4 сетов или 4 итераций.
7.Ошибка — это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки поразному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.
1.MSE

2.Root MSE

3.Arctan

Принцип подсчета ошибки во всех случаях одинаков. За каждый сет, мы считаем ошибку, отняв от идеального ответа, полученный. Далее, либо возводим в квадрат, либо вычисляем квадратный тангенс из этой разности, после чего полученное число делим на количество сетов.
Виды искусственных нейронных сетей. Искусственные нейронные сети состоят из совокупности искусственных нейронов. Возникает логичный вопрос– а как располагать/соединять друг с другом эти самые искусственные нейроны? Как правило, в большинстве нейронных сетей есть так называемый входной слой, который выполняет только одну задачу– распределение входных сигналов остальным нейронам. Нейроны этого слоя не производят никаких вычислений.









