Выбор нейронной сети и функции активации - PullRequest
0 голосов
/ 22 марта 2019

Я очень новичок в области нейронных сетей.Извините, если этот вопрос очень любительский.

Я собираюсь построить модель нейронной сети, чтобы предсказать, получит ли определенное изображение, которое я собираюсь опубликовать на платформе социальных сетей, определенный уровень вовлеченности.

У меня есть около 120 изображений с историческими данными о степени вовлеченности.Доступна следующая информация:

  1. Изображения размером 501 px x 501 px
  2. Тип изображения (Внешняя фотосессия / Внутренняя фотосессия)
  3. День публикации изображения(Воскресенье / понедельник / вторник / среда / четверг / пятница / суббота)
  4. Время публикации изображения (18:33, 10:13, 19:36 и т. Д.)
  5. Нет.людей, которые видели почту (15659, 35754, 25312 и т. д.)
  6. Уровень вовлеченности (5,22%, 3,12%, 2,63% и т. д.)

Я бы хотел, чтобы модель прогнозировалаесли определенное изображение при публикации в определенный день и время даст коэффициент вовлеченности 3% или более.

Как вы могли заметить, входными данными являются изображения, текст (обозначающий тип или день),время и цифры.

Не могли бы вы помочь мне понять, как построить нейронную сеть для этой проблемы?

PS: Я очень новичок в этой области.Было бы здорово, если бы вы дали подробное указание, как мне поступить, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 22 марта 2019

Нейронная сеть имеет три вида нейронных слоев:

  1. Входной слой. Он хранит данные, которые получит эта сеть. Количество нейронов должно равняться количеству входов, которые у вас есть;
  2. Скрытый слой. Он использует входные данные, которые поступают из предыдущего слоя, и выполняет необходимые вычисления, чтобы получить результат, который передается на выходной слой. Более сложные проблемы могут потребовать более одного скрытого слоя. Насколько я знаю, не существует алгоритма для определения количества нейронов в этом слое, поэтому я думаю, что вы определяете это число на основе проб и ошибок и предыдущего опыта;
  3. Выходной слой. Он получает результаты от скрытого слоя и передает его пользователю для личного использования. Количество нейронов из выходного слоя равно количеству ваших выходов.

Согласно тому, что вы пишете здесь, ваша учебная база имеет 6 входов и один выход (уровень вовлеченности). Это означает, что ваша искусственная нейронная сеть (ANN) будет иметь 6 нейронов на входном слое и один нейрон на выходном слое.

Я не уверен, что вы можете передавать изображения в качестве входных данных в нейронную сеть. Кроме того, поскольку в теории существуют бесконечные типы изображений, я думаю, вы должны классифицировать их немного, каждая категория получает номер. Примером категоризации будет:

  • Изображения с собаками относятся к категории 1;
  • Изображения с больницами относятся к категории 2 и т. Д.

Итак, ваши входные данные будут выглядеть так:

  1. Категория изображения (собаки = 1, больницы = 2 и т. Д.);
  2. Тип изображения (Внешняя фотосессия = 1, Внутренняя фотосессия = 2);
  3. День проводки (воскресенье = 1, понедельник = 2 и т. Д.);
  4. Время размещения изображения;
  5. Количество людей, которые видели почту;
  6. Коэффициент участия.

Количество скрытых слоев и количество каждого нейрона от каждого скрытого слоя зависит от сложности вашей задачи. Имея 120 изображений, я думаю, что одного скрытого слоя и 10 нейронов на этом слое достаточно.

У ИНС будет один скрытый слой (уровень вовлеченности).

После создания базы данных, содержащей информацию о 120 изображениях (известной как обучающая база данных ), следующим шагом является обучение ANN с использованием базы данных. Однако здесь есть некоторые обсуждения.

Обучение ANN означает вычисление некоторых параметров скрытых нейронов с использованием алгоритма оптимизации так, чтобы сумма квадратов ошибок была минимальной. Процесс обучения имеет некоторую степень случайности. Чтобы свести к минимуму влияние коэффициента случайности и получить максимально точные оценки, ваша учебная база данных должна иметь:

  1. Согласованные данные;
  2. Много записей;

Я не знаю, насколько последовательны ваши данные, но по моему опыту небольшая учебная база данных с непротиворечивыми данными превосходит огромную базу данных с непоследовательными.

Судя по проблеме, я думаю, вам следует использовать функцию активации по умолчанию, предоставляемую программным обеспечением, которое вы используете для обработки ANN.

Как только вы обучили свою базу данных, пришло время посмотреть, насколько эффективной была эта тренировка. Программное обеспечение, которое вы используете для ANN, должно предоставить вам инструменты для оценки этого, инструменты, которые должны быть задокументированы. Если тренировка вас устраивает, вы можете начать ее использовать. Если это не так, вы можете либо переобучить ANN, либо использовать большую базу данных.

...