Текст книги "Нейросети. Раскройте всю мощь нейронных сетей: полное руководство по пониманию, внедрению ИИ"
Автор книги: Александр Чичулин
Жанр: Руководства, Справочники
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 2 (всего у книги 8 страниц) [доступный отрывок для чтения: 2 страниц]
Предварительная обработка данных играет жизненно важную роль в подготовке данных к обучению нейронной сети. Он включает в себя ряд методов и шагов по очистке, преобразованию и нормализации данных. В этой главе мы рассмотрим некоторые распространенные методы предварительной обработки данных, используемые в нейронных сетях:
1. Очистка данных:
– Очистка данных включает в себя обработку отсутствующих значений, выбросов и несоответствий в наборе данных.
– Отсутствующие значения могут быть вменены с использованием таких методов, как среднее условное исчисление, медианное условное исчисление или условное исчисление на основе статистических моделей.
– Выбросы, которые представляют собой экстремальные значения, отклоняющиеся от большинства данных, могут быть обнаружены и либо удалены, либо обработаны с помощью таких методов, как Winsorization или замена статистически правдоподобными значениями.
– Несогласованные данные, такие как конфликтующие записи или проблемы с форматированием, могут быть устранены путем проверки и стандартизации данных.
2. Нормализация и стандартизация данных:
– Нормализация и стандартизация данных – это методы, используемые для масштабирования числовых признаков до аналогичного диапазона.
– Нормализация масштабирует данные до диапазона от 0 до 1, в то время как стандартизация преобразует данные в среднее значение 0 и стандартное отклонение 1.
– Нормализация часто подходит для алгоритмов, которые предполагают ограниченный входной диапазон, в то время как стандартизация полезна, когда объекты имеют различные масштабы и распределения.
3. Одноразовое горячее кодирование:
– Одноразовое кодирование используется для представления категориальных переменных в виде двоичных векторов.
– Каждая категория преобразуется в двоичный вектор, где только один элемент равен 1 (что указывает на наличие этой категории), а остальные равны 0.
– Одноразовое кодирование позволяет использовать категориальные данные в качестве входных данных в нейронных сетях, позволяя им обрабатывать нечисловую информацию.
4. Масштабирование функций:
– Масштабирование признаков гарантирует, что числовые объекты находятся в аналогичном масштабе, не позволяя одним объектам доминировать над другими из-за различий в величинах.
– Общие методы включают минимальное и максимальное масштабирование, когда функции масштабируются до определенного диапазона, и стандартизацию, как упоминалось ранее.
5. Уменьшение размерности:
– Методы уменьшения размерности уменьшают количество входных элементов, сохраняя при этом важную информацию.
– Анализ главных компонент (PCA) и t-SNE (t-распределенное стохастическое встраивание соседей) являются популярными методами уменьшения размерности.
– Уменьшение размерности может помочь смягчить проклятие размерности и повысить эффективность обучения.
6. Сплит и перекрестная проверка обучения-тестирования:
– Чтобы оценить производительность нейронной сети, важно разделить данные на обучающий и тестовый наборы.
– Обучающий набор используется для обучения сети, а тестовый – для оценки ее производительности на невидимых данных.
– Перекрестная проверка – это еще один метод, при котором набор данных разделяется на несколько подмножеств (складок) для итеративного обучения и тестирования сети, получения более надежной оценки ее производительности.
Эти методы предварительной обработки данных применяются для обеспечения того, чтобы данные находились в подходящей форме для обучения нейронных сетей. Очищая данные, обрабатывая отсутствующие значения, масштабируя функции и уменьшая размерность, мы можем улучшить производительность сети, повысить ее эффективность и добиться лучшего обобщения невидимых данных.
Обработка отсутствующих данныхОтсутствующие данные являются распространенной проблемой в наборах данных и могут существенно повлиять на производительность и надежность нейронных сетей. В этой главе мы рассмотрим различные методы эффективной обработки отсутствующих данных:
1. Удаление отсутствующих данных:
– Одним из простых подходов является удаление экземпляров или объектов, содержащих отсутствующие значения.
– Если только небольшая часть данных имеет отсутствующие значения, удаление этих экземпляров или функций может не оказать существенного влияния на общий набор данных.
– Однако этот подход следует использовать с осторожностью, так как он может привести к потере ценной информации, особенно если отсутствующие данные не являются случайными.
2. Среднее/медианное условное исчисление:
– Среднее или медианное условное исчисление предполагает замену отсутствующих значений средним или медианным значением соответствующего признака.
– Этот метод предполагает, что отсутствующие значения отсутствуют случайным образом (MAR), а непропущенные значения обладают теми же статистическими свойствами.
– Условное исчисление помогает сохранить размер выборки и поддерживать распределение признака, но может привести к смещению, если пропуск не является случайным.
3. Регрессионное вменение:
– Регрессионное условное исчисление предполагает прогнозирование пропущенных значений с использованием регрессионных моделей.
– Регрессионная модель обучается на непропущенных значениях, а затем модель используется для прогнозирования отсутствующих значений.
– Этот метод фиксирует взаимосвязи между отсутствующим признаком и другими признаками, что позволяет более точно вменить.
– Тем не менее, он предполагает, что отсутствие функции может быть разумно предсказано другими переменными.
4. Множественное вменение:
– Множественное условное исчисление – это метод, при котором отсутствующие значения вменяются несколько раз для создания нескольких полных наборов данных.
– Каждому набору данных присваиваются различные правдоподобные значения, основанные на наблюдаемых данных и их неопределенности.
– Затем нейронная сеть обучается на каждом вмененном наборе данных, и результаты объединяются для получения более надежных прогнозов.
– Множественное условное исчисление объясняет неопределенность в условном исчислении недостающих значений и может привести к более надежным результатам.
5. Выделенные архитектуры нейронных сетей:
– Существуют специальные архитектуры нейронных сетей, предназначенные для непосредственной обработки отсутствующих данных.
– Например, замаскированный автоэнкодер для оценки распределения (MADE) и автоэнкодер шумоподавления (DAE) могут обрабатывать пропущенные значения во время обучения и вывода.
– Эти архитектуры учатся восстанавливать отсутствующие значения на основе имеющейся информации и могут обеспечить повышенную производительность наборов данных с отсутствующими данными.
Выбор метода обработки отсутствующих данных зависит от характера и степени отсутствия, предположений о механизме отсутствующих данных и характеристик набора данных. Важно тщательно рассмотреть последствия каждого метода и выбрать тот, который наилучшим образом соответствует конкретным требованиям и ограничениям имеющегося набора данных.
Работа с категориальными переменнымиКатегориальные переменные создают уникальные проблемы в нейронных сетях, поскольку для их эффективного использования требуется соответствующее представление и кодирование. В этой главе мы рассмотрим методы работы с категориальными переменными в нейронных сетях:
1. Кодирование этикетки:
– Кодировка меток присваивает уникальную числовую метку каждой категории в категориальной переменной.
– Каждая категория сопоставляется с целочисленным значением, что позволяет нейронным сетям обрабатывать данные.
– Однако кодирование меток может привести к появлению порядковых отношений между категориями, которых не существует, что может привести к неправильным интерпретациям.
2. Одногорячее кодирование:
– Одноразовое кодирование – популярный метод представления категориальных переменных в нейронной сети.
– Каждая категория преобразуется в двоичный вектор, где каждый элемент представляет наличие или отсутствие определенной категории.
– Однотонная кодировка гарантирует, что каждая категория представлена одинаково, и удаляет любые подразумеваемые порядковые отношения.
– Это позволяет нейронной сети рассматривать каждую категорию как отдельную функцию.
3. Встраивание:
– Встраивание – это метод, который изучает низкоразмерное представление категориальных переменных в нейронной сети.
– Он сопоставляет каждую категорию с плотным вектором непрерывных значений, при этом аналогичные категории имеют векторы, расположенные ближе в пространстве внедрения.
– Встраивание особенно полезно при работе с многомерными категориальными переменными или когда отношения между категориями важны для задачи.
– Нейронные сети могут изучать вложения в процессе обучения, фиксируя значимые представления категориальных данных.
4. Встраивание сущностей:
– Встраивание сущностей – это специализированная форма внедрения, использующая преимущества связей между категориями.
– Например, в рекомендательных системах встраивание сущностей может представлять категории пользователей и элементов в совместном пространстве внедрения.
– Встраивание сущностей позволяет нейронной сети изучать отношения и взаимодействия между различными категориями, повышая ее предсказательную силу.
5. Хеширование функций:
– Хеширование признаков, или трюк с хешированием, – это метод, который преобразует категориальные переменные в векторное представление фиксированной длины.
– Он применяет хеш-функцию к категориям, сопоставляя их с предопределенным количеством измерений.
– Хеширование функций может быть полезно, когда количество категорий велико и их кодирование по отдельности становится непрактичным.
Выбор метода работы с категориальными переменными зависит от характера данных, количества категорий и отношений между категориями. Обычно используются одноразовое кодирование и внедрение, причем встраивание особенно эффективно при захвате сложных взаимодействий категорий. Тщательное рассмотрение соответствующего метода кодирования гарантирует, что категориальные переменные правильно представлены и могут внести значимый вклад в предсказания нейронной сети.
Часть II: Построение и обучение нейронных сетей
Нейронные сети с прямой связью
Структура и принципы работыПонимание структуры и принципов работы нейронных сетей имеет решающее значение для их эффективного использования. В этой главе мы рассмотрим ключевые компоненты и принципы работы нейронных сетей:
1. Нейроны:
– Нейроны являются основными строительными блоками нейронных сетей.
– Они принимают входные сигналы, выполняют вычисления и выдают выходные сигналы.
– Каждый нейрон применяет линейное преобразование ко входу, за которым следует нелинейная функция активации для введения нелинейности.
2. Слои:
– Нейронные сети состоят из нескольких слоев взаимосвязанных нейронов.
– Входной слой получает входные данные, выходной слой создает окончательные прогнозы, и между ними может быть один или несколько скрытых слоев.
– Скрытые слои позволяют сети изучать сложные представления данных, извлекая соответствующие функции.
3. Веса и смещения:
– Каждая связь между нейронами в нейронной сети связана с весом.
– Веса определяют силу связи и контролируют влияние выхода одного нейрона на вход другого.
– Смещения – это дополнительные параметры, связанные с каждым нейроном, позволяющие им вносить сдвиг или смещение в вычисления.
4. Функции активации:
– Активационные функции привносят нелинейность в вычисления нейронов.
– Они определяют, следует ли активировать нейрон или нет, основываясь на его входе.
– Общие функции активации включают сигмоид, tanh, ReLU (выпрямленный линейный блок) и softmax.
5. Распространение с прямой связью:
– Распространение с прямой связью – это процесс передачи входных данных через слои сети для создания прогнозов.
– Каждый слой выполняет вычисления на основе входных данных, полученных от предыдущего слоя, применяя веса, смещения и функции активации.
– Выходы одного слоя служат входными данными для следующего слоя, продвигаясь по сети до тех пор, пока не будут получены окончательные прогнозы.
6. Обратное распространение:
– Обратное распространение – алгоритм, используемый для обучения нейронных сетей.
– Он вычисляет градиенты функции потерь по отношению к весам и смещениям сети.
– Градиенты указывают направление и величину самого крутого спуска, направляя обновления параметров сети для минимизации потерь.
– Обратное распространение распространяет градиенты назад по сети, слой за слоем, используя правило цепи исчисления.
7. Обучение и оптимизация:
– Обучение нейронной сети включает в себя итеративную настройку ее весов и смещений, чтобы свести к минимуму разницу между прогнозируемыми и фактическими результатами.
– Алгоритмы оптимизации, такие как градиентный спуск, используются для обновления параметров на основе рассчитанных градиентов.
– Обучение обычно включает в себя подачу в сеть помеченных обучающих данных, сравнение прогнозов с истинными метками и соответствующее обновление параметров.
Понимание структуры и принципов работы нейронных сетей помогает в разработке и обучении эффективных моделей. Регулируя архитектуру, функции активации и процесс обучения, нейронные сети могут изучать сложные взаимосвязи и делать точные прогнозы по различным задачам.
Реализация нейронной сети с прямой связьюРеализация нейронной сети с прямой связью включает в себя перевод концепций и принципов в практическую реализацию кода. В этой главе мы рассмотрим шаги по реализации базовой нейронной сети с прямой связью:
1. Определите сетевую архитектуру:
– Определите количество слоев и количество нейронов в каждом слое.
– Определитесь с функциями активации, которые будут использоваться в каждом слое.
– Определите входные и выходные размеры в зависимости от поставленной задачи.
2. Инициализируйте параметры:
– Инициализируйте веса и смещения для каждого нейрона в сети.
– Случайная инициализация обычно используется, чтобы нарушить симметрию и избежать застревания в локальных минимумах.
3. Реализуйте распространение с прямой связью:
– Передавайте входные данные через слои сети, по одному слою за раз.
– Для каждого слоя вычислите взвешенную сумму входных данных и примените функцию активации для получения выходных данных слоя.
– Прямое распространение продолжается до тех пор, пока не будет достигнут выходной уровень, генерируя прогнозы сети.
4. Определите функцию потерь:
– Выберите подходящую функцию потерь, которая измеряет расхождение между прогнозируемыми выходными данными и истинными метками.
– Общие функции потерь включают среднеквадратичную ошибку (MSE) для задач регрессии и потери кросс-энтропии для задач классификации.
5. Реализуйте обратное распространение:
– Вычислить градиенты функции потерь по отношению к весам и смещениям сети.
– Распространяйте градиенты назад по сети, слой за слоем, используя правило цепи исчисления.
– Обновите веса и смещения с помощью алгоритма оптимизации, такого как градиентный спуск, на основе вычисленных градиентов.
6. Обучите сеть:
– Перебирайте обучающие данные, передавая их в сеть, выполняя прямое распространение, вычисляя потери и обновляя параметры с помощью обратного распространения.
– Отрегулируйте скорость обучения, которая контролирует размер шага обновления параметров, чтобы сбалансировать скорость сходимости и стабильность.
– Отслеживайте прогресс обучения, оценивая потери на отдельном проверочном наборе.
7. Оцените сеть:
– После того, как сеть будет обучена, оцените ее производительность на невидимых данных.
– Используйте прямое распространение для создания прогнозов для набора оценочных данных.
– Вычисляйте соответствующие показатели, такие как точность, прецизионность, отзыв или среднеквадратичная ошибка, в зависимости от типа проблемы.
8. Итерация и тонкая настройка:
– Экспериментируйте с различными сетевыми архитектурами, функциями активации и параметрами оптимизации для повышения производительности.
– Настройте модель, настроив гиперпараметры, такие как скорость обучения, размер пакета и методы регуляризации, такие как отсев или регуляризация L2.
Реализация нейронной сети с прямой связью включает в себя перевод математических концепций в код с использованием языка программирования и фреймворка глубокого обучения, такого как TensorFlow или PyTorch. Следуя шагам, описанным выше, и экспериментируя с различными конфигурациями, вы можете обучать и использовать нейронные сети для различных задач.
Тонкая настройка моделиТонкая настройка нейронной сети предполагает оптимизацию ее производительности путем корректировки различных аспектов модели. В этой главе мы рассмотрим приемы тонкой настройки нейронной сети:
1. Настройка гиперпараметров:
– Гиперпараметры – это настройки, которые определяют поведение нейронной сети, но не изучаются на основе данных.
– Примеры гиперпараметров включают скорость обучения, размер пакета, количество скрытых слоев, количество нейронов в каждом слое, параметры регуляризации и функции активации.
– Тонкая настройка включает в себя систематическое изменение этих гиперпараметров и оценку производительности сети для поиска оптимальной конфигурации.
2. Планирование скорости обучения:
– Скорость обучения определяет размер шага при обновлении параметров во время обучения.
– Выбор подходящей скорости обучения имеет решающее значение для конвергенции и предотвращения превышения или застревания в локальных минимумах.
– Методы планирования скорости обучения, такие как снижение скорости обучения с течением времени или использование адаптивных методов, таких как Adam или RMSprop, могут помочь точно настроить производительность модели.
3. Методы регуляризации:
– Методы регуляризации предотвращают переобучение и улучшают обобщение, добавляя дополнительные ограничения или штрафы к функции потерь.
– Регуляризация L1 и L2 добавляет штрафной термин к функции потерь в зависимости от величины весов, поощряя меньшие веса и уменьшая чрезмерную зависимость от определенных признаков.
– Dropout случайным образом деактивирует часть нейронов во время обучения, заставляя сеть изучать более надежные и разнообразные представления.
4. Увеличение данных:
– Методы дополнения данных модифицируют обучающие данные, чтобы увеличить их размер и разнообразие, помогая сети лучше обобщать.
– Распространенные методы увеличения данных включают случайную обрезку, поворот, переворачивание и добавление шума или искажений к входным данным.
– Увеличение данных может помочь уменьшить переобучение и улучшить способность модели обрабатывать изменения в реальных данных.
5. Перенос обучения:
– Transfer Learning использует предварительно обученные модели на больших наборах данных и адаптирует их к новым задачам или областям.
– Вместо обучения с нуля передаются знания предварительно обученной модели, и только последние несколько слоев настраиваются под конкретную задачу.
– Трансферное обучение особенно полезно, когда новая задача имеет ограниченные данные или когда предварительно обученная модель изучила полезные общие функции.
6. Модельный ансамбль:
– Ансамбль моделей объединяет прогнозы из нескольких моделей для более точных и надежных прогнозов.
– Разные модели могут иметь разные сильные и слабые стороны, и их сочетание может привести к повышению общей производительности.
– Ансамблевые методы включают усреднение прогнозов нескольких моделей или использование более продвинутых методов, таких как упаковка, повышение или укладка.
Тонкая настройка модели включает в себя итеративный процесс настройки гиперпараметров, методов регуляризации и других аспектов, основанных на экспериментах и оценке. Важно отслеживать производительность модели на данных проверки или тестирования и избегать переобучения, используя правильные стратегии проверки и методы регуляризации. Тонкая настройка модели позволяет оптимизировать ее производительность и повысить способность эффективно обрабатывать реальные данные.
Сверточные нейронные сети (CNN)
Введение в CNNСверточные нейронные сети (CNN) – это специализированный тип нейронной сети, предназначенный для обработки и анализа структурированных сетчатых данных, таких как изображения и видео. В этой главе мы познакомим вас с ключевыми понятиями и компонентами CNN:
1. Мотивация для CNN:
– Традиционные нейронные сети не очень хорошо подходят для обработки сетчатых данных из-за их полностью связного характера.
– CNN были разработаны для использования локальных пространственных отношений, присутствующих в изображениях, и эффективного захвата соответствующих функций.
2. Сверточные слои:
– Сверточные слои являются фундаментальными строительными блоками CNN.
– Они состоят из фильтров (также известных как ядра или детекторы признаков), которые сканируют входные данные, извлекая локальные объекты.
– Каждый фильтр выполняет операцию свертки, вычисляя скалярное произведение между его весами и небольшой областью входных данных.
– Сверточные слои применяют несколько фильтров параллельно, генерируя несколько карт объектов в качестве выходных данных.
3. Объединение слоев:
– Объединение слоев уменьшает пространственную размерность карт объектов, сохраняя при этом наиболее значимую информацию.
– Общие методы пулинга включают максимальное объединение, среднее объединение и минимальное объединение.
– Объединение в пулы помогает сделать сеть более инвариантной к небольшим трансляциям и вариациям входных данных.
4. Функции активации в CNN:
– Функции активации привносят нелинейность в вычисления в CNN, позволяя им моделировать сложные отношения.
– Общие функции активации, используемые в CNN, включают ReLU (выпрямленный линейный блок), сигмоид и tanh.
– ReLU широко используется в CNN из-за его способности смягчать проблему исчезающего градиента и обеспечивать более быструю конвергенцию.
5. Архитектуры CNN:
– Различные архитектуры CNN были разработаны для решения различных задач и достижения современной производительности.
– Примеры включают LeNet-5, AlexNet, VGGNet, GoogLeNet и ResNet, каждый из которых имеет свои собственные архитектурные инновации и принципы проектирования.
– Эти архитектуры обычно складывают несколько сверточных и объединяющих слоев, за которыми следуют полностью связанные слои для классификации или регрессии.
6. Перенос обучения с помощью CNN:
– CNN преуспевают в изучении богатых представлений функций из изображений, и трансферное обучение использует эту возможность.
– Предварительно обученные модели CNN, обученные на больших наборах данных, таких как ImageNet, можно использовать в качестве экстракторов признаков для других задач.
– Трансферное обучение экономит время обучения и требует меньше данных, так как предварительно обученные модели уже изучили значимые функции.
CNN произвели революцию в задачах компьютерного зрения, таких как классификация изображений, обнаружение объектов и сегментация изображений. Их способность автоматически изучать иерархические представления объектов из необработанных данных делает их мощными инструментами для анализа и понимания визуальной информации. В следующих главах мы углубимся в архитектуру CNN, методы обучения и практические приложения.
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?