Основным блоком глубокого обучения является искусственный нейрон, то есть он принимает взвешенную совокупность входных данных, применяет функцию и выдает результат. Самый первый шаг к созданию искусственного нейрона был сделан Уорреном МакКаллохом и Уолтером Питтсом в 1943 году, вдохновленные нейробиологией, и создали модель, известную как нейрон Маккаллоха-Питтса.

Заявление об ограничении ответственности: содержание и структура этой статьи основаны на лекциях по глубокому обучению от One-Fourth Labs - Padhai.

Мотивация - биологический нейрон

Вдохновение для создания искусственного нейрона исходит от биологического нейрона.

Говоря упрощенно, нейроны получают сигналы и производят ответ. Общая структура нейрона представлена ​​на Рис.1. Дендриты - это каналы передачи сигналов от другого нейрона или другого органа. Synapse - управляет силой взаимодействия между нейронами. Считайте это весами, которые мы используем в нейронных сетях. Сома - блок обработки нейрона.

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

Модель нейрона Маккаллоха-Питтса

Модель нейрона МП, представленная Уорреном Маккалоком и Уолтером Питтсом в 1943 году. Модель нейрона МП также известна как линейная пороговая модель ворот.

Математическая модель

Функция (сома) фактически разделена на две части: g - объединяет входные данные в одно числовое значение, а функция f производит выходные данные этого нейрона, принимая вывод g в качестве входа i, e .. одно значение в качестве аргумента. Функция f выведет значение 1, если агрегирование, выполняемое функцией g, превышает некоторый порог, иначе она вернет 0.

Входы x1, x2,… .. xn для MP Neuron могут принимать только логические значения, а входы могут быть тормозящими или возбуждающими. Тормозящие входы могут иметь максимальное влияние на процесс принятия решений в модели. В некоторых случаях тормозящие входы могут повлиять на окончательный результат модели.

Например, я могу предсказать свое собственное решение о том, хочу ли я смотреть завтра фильм в ближайшем кинотеатре IMAX или нет, используя модель нейрона MP. Все входные данные модели являются логическими, т.е. [0,1], и из рисунка 2 мы видим, что выходные данные модели также будут логическими. (0 - не иду в кино, 1 - иду в кино)

Входы для вышеуказанной проблемы могут быть

  • x1 - IsRainingTomorrow (Будет ли завтра дождь или нет)
  • x2 - IsScifiMovie (люблю научно-фантастические фильмы)
  • x3 - IsSickTomorrow (заболею я завтра или нет, зависит от каких-либо симптомов, например: лихорадка)
  • x4 - IsDirectedByNolan (фильм режиссера Кристофера Нолана или нет) и т. д.

В этом сценарии, если x3 - IsSickTomorrow равно 1, то на выходе всегда будет 0. Если я плохо себя чувствую в день фильма, то независимо от того, кто является актером или режиссером фильма, я бы не стал собираюсь в кино.

Функция потерь

Возьмем пример покупки телефона исходя из некоторых особенностей функций в двоичном формате. {y - 0: не покупать телефон и y - 1: покупать телефон}

Для каждого конкретного телефона (наблюдения) с определенным пороговым значением b, используя модель нейрона MP, мы можем предсказать результат, используя условие, что сумма входных данных больше, чем b, тогда прогнозируемое значение будет равняется 1, иначе будет 0. Потери для конкретного наблюдения будут возведены в квадрат разницы между Yactual и Ypredicted.

Точно так же для всех наблюдений вычислите сумму квадратов разности между Yactual и Ypredicted, чтобы получить общие потери модели для определенного порогового значения b.

Алгоритм обучения

Цель алгоритма обучения - найти наилучшее значение параметра b, чтобы потери модели были минимальными. В идеальном сценарии потеря модели для наилучшего значения b будет равна нулю.

Для n функций в данных суммирование, которое мы вычисляем на рис. 5, может принимать только значения от 0 до n, потому что все наши входные данные являются двоичными (0 или 1). 0 - указывает, что все функции, описанные на рис. 4, выключены, а 1 - указывает, что все функции включены. Следовательно, различные значения, которые может принимать порог b, также будут варьироваться от 0 до n. Поскольку у нас есть только один параметр с диапазоном значений от 0 до n, мы можем использовать метод грубой силы, чтобы найти лучшее значение b.

  • Инициализируйте b случайным целым числом [0, n]
  • За каждое наблюдение
  • Найдите прогнозируемый результат, используя формулу на рис.

Вычислите сумму входных данных и проверьте, больше ли оно или равно b. Если он больше или равен b, то прогнозируемый результат будет равен 1, иначе он будет равен 0.

  • После нахождения результата прогнозирования вычислите потери для каждого наблюдения.
  • Наконец, вычислите общие потери модели, суммируя все индивидуальные потери.
  • Точно так же мы можем перебрать все возможные значения b и найти полную потерю модели. Затем мы можем выбрать такое значение b, чтобы потери были минимальными.

Оценка модели

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

Для оценки рассчитаем показатель точности модели.

Для показанных выше тестовых данных точность модели нейрона МП = 75%.

Реализация модели нейрона MP на Python

В этом разделе мы увидим, как реализовать модель нейрона MP с помощью Python. Набор данных, который мы будем использовать, это набор данных о раке груди из sklearn. Перед началом построения модели нейрона МП. Мы начнем с загрузки данных и разделения переменных ответа и цели.

После загрузки данных мы можем использовать функцию train_test_split sklearn, чтобы разделить данные на две части - обучение и тестирование в соотношении 80:20.

Помните из нашего предыдущего обсуждения, MP Neuron принимает только двоичные значения в качестве входных данных. Поэтому нам нужно преобразовать непрерывные функции в двоичный формат. Для этого мы будем использовать функцию pandas.cut, чтобы разделить все функции на 0 или 1 за один раз. Когда мы будем готовы с входными данными, которые нам понадобятся для построения модели, обучим ее на обучающих данных и оценим производительность модели на тестовых данных.

Чтобы создать модель нейрона MP, мы создадим класс, и внутри этого класса у нас будут три разные функции:

  • модельная функция - для расчета суммы бинаризованных входов.
  • Функция прогнозирования - для прогнозирования результата для каждого наблюдения в данных.
  • функция подгонки - функция подбора перебирает все возможные значения порога b и находит наилучшее значение b, при котором потери будут минимальными.

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

Проблемы с моделью нейрона МП

  • Логические входы.
  • Логические выходы.
  • Порог b может принимать только несколько возможных значений.
  • Все входные данные модели имеют одинаковый вес.

Продолжить обучение

Если вам интересно узнать больше об искусственной нейронной сети, посмотрите Искусственные нейронные сети Абхишека и Пухраджа из Starttechacademy. Также курс ведется в последней версии Tensorflow 2.0 (бэкэнд Keras). У них также есть очень хороший комплект по машинному обучению (базовый + продвинутый) на языках Python и R.

Резюме

В этой статье мы рассмотрели работу модели нейрона MP и ее аналогию с биологическим нейроном. В конце концов, мы также увидели реализацию MP Neuron Model с использованием Python и набора реальных данных о раке груди.

Свяжитесь со мной

GitHub: https://github.com/Niranjankumar-c
LinkedIn: https://www.linkedin.com/in/niranjankumar-c/

Заявление об ограничении ответственности. В этом сообщении могут быть партнерские ссылки на соответствующие ресурсы. Вы можете приобрести комплект по самой низкой цене. Я получу небольшую комиссию, если вы купите курс.