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

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

У нейрона есть тело, дендроны слева, соединенные с этим телом, синапсы, которые являются рецепторами для ввода, поступающего в нейрон; справа у нейрона есть аксон и терминал аксона (или несколько), которые передают информацию от нейрона следующему. Терминалы аксонов соединяются с синапсами.
Сообщения в синапсах представляют собой числа, которые усиливаются или уменьшаются по мере прохождения через дендроны пропорционально весу дендронов, отмеченному w или b в случае дендрона смещения (дендрон смещения - всегда подключен к входящему сигналу, равному 1). Если вес w равен 0, то дендрон практически мертв - он вообще не передает никакой информации. Сигналы от каждого дендрона суммируются в теле нейрона как взвешенный вход z.
Взвешенный вход z затем переходит к аксону, где его может коснуться функция активации σ. Функция активации может быть функцией идентичности (~ функция активации ничего не делает с взвешенным входом), функцией сигмоида, функцией выпрямленной линейной, но на самом деле может быть любой функцией, необходимой для данного приложения. После функции активации мы получаем a¹, состояние активации нейрона.

Из того места, где я могу использовать MathJax, вот что я могу сказать о прямом проходе для нашего единственного нейрона:

Заставляем работать отдельные нейроны
Пока наш нейрон принимает входные данные и производит выходные данные, но это все. Если веса и смещения установлены на определенные значения, выходные данные могут быть полезны - в противном случае у нас есть просто генератор случайных чисел.
Чтобы нейрон был полезным, нам нужно его обучить. Итак, нам нужен тренажер для этого нейрона, который (i) сможет оценивать производительность нейрона и (ii) создать процедуру обучения, чтобы нейрон работал лучше. Мы используем функцию стоимости для определения (i) и алгоритм обратного распространения для адресации (ii).

И что теперь? Что ж, давайте заменим C и σ в приведенных выше уравнениях на фактические функции, и мы начнем видеть, что эти формулы являются просто обобщениями классических задач регрессии.
Одиночные нейроны решают (мульти) линейные регрессии
Цель линейной регрессии - найти для зависимой переменной и n независимых переменных линию, выраженную как функцию независимых переменных, так чтобы расстояние между зависимой переменной и этой линией было минимальным. Простой пример линейной регрессии:

Вот точно такая же программа, но написанная с использованием соглашений, которые мы использовали до сих пор для описания нашего нейрона:

в котором мы распознаем проблему одиночной нейронной сети, где функция активации аксона σ - это функция идентичности, а C - это в квадрате l2 (или евклидовой) нормы.

Отдельные нейроны решают логистическую регрессию
Точно так же логистические регрессии могут быть выражены как проблемы одной нейронной сети. Рассмотрим заявленную цель логистической регрессии:

что эквивалентно программе одиночной нейронной сети:


Таким образом, при использовании одного нейрона логистическая регрессия по сравнению с линейной регрессией - это просто вопрос переключения функций активации и стоимости нейрона:

Реализация Python и реальные регрессии, решаемые одним нейроном
Вот как отдельные нейроны справились с четырьмя разными регрессионными упражнениями:




- Две логистические регрессии были решены одним нейроном с 10 входными дендронами, сигмоидной функцией активации и функцией кросс-энтропийной стоимости.
- Две линейные регрессии были решены одиночными нейронами с 5-10 входными дендронами, функцией активации идентичности и функцией стоимости в квадрате l2.
Основной код для воспроизведения этих результатов воспроизводится ниже, а полный код вы можете найти на GitHub.
Ничего особенного, и именно так мы узнали, что отдельные нейроны невероятно мощны. Следующий вопрос, который я задаю себе, - почему выпрямленная линейная функция активации кажется настолько распространенной в реальных нейронных сетях, если идентичность и сигмовидная функция настолько сильны. В частности, выпрямленные линейные активации заставляют нейроны «умирать» (= выход 0), если их взвешенный вход отрицательный - какое значение может быть получено от создания нейронов, демонстрирующих такое поведение? Ничего полезного в контексте отдельных нейронов, но, возможно, что-то хорошее, когда дело доходит до нейронных сетей, как мы узнаем.
Основной фрагмент кода для создания отдельных нейронов, которые создали диаграммы выше. Полный код на https://github.com/cedricbellet/1neuron_net.