Эта серия статей - попытка сделать нейронные сети понятными для людей, которые не знают ничего, кроме математики средней школы. Нет большего ужаса, чем наблюдать за утомительными математическими уравнениями и длинными строками кода за кодом, не зная, как их использовать. Забирает все самое интересное!

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

Предположим, вы являетесь менеджером по найму в компании, которая хочет нанять студентов университета на летнюю стажировку. Вы можете получить резюме студента, имеющего средний балл 3.0 и выполнившего 10 личных проектов, если вы решите нанять студента. В другом резюме может быть 1.0 GPA и 2 личных проекта, вы отклоняете заявку. Теперь вам нужно выбрать еще одно резюме со средним баллом 2.7 и 8 личными проектами, будет ли оно принято или нет?

Чтобы найти ответ, давайте начнем с отображения данных, которые у нас уже есть, на графике со средним баллом по оси X и количеством проектов по оси Y.

Синяя точка показывает ученика, которого приняли, оранжевая точка - ученика, которому отказали, а серая точка - ученика, с которым нам нужно принять решение. Теперь давайте добавим все приемы и отклонения, которые могли произойти за последние несколько лет, и добавим эти данные на наш график.

Обратите внимание на линию, отделяющую синие точки от оранжевых, это ясно говорит о том, что следует принять студента со средним баллом 2,7 и 8 проектами. Эта линия называется «моделью» на жаргоне AI / Neural Network / ML (я всегда волновался, когда слышал этот термин, но это действительно не так уж и плохо, правда?). Нам, людям, легко провести эту линию, но это включает в себя рутинную задачу: тщательно построить каждую точку данных и затем найти линию наилучшего соответствия. Хорошие новости: компьютеры были созданы, чтобы избавить нас от всей этой скучной работы, чтобы мы могли сосредоточиться на более важных задачах. Итак, как заставить компьютеры найти модель для нас?

Давайте начнем с некоторой базовой математики, мы собираемся пометить горизонтальную ось, соответствующую GPA, переменной x1, а вертикальную ось, соответствующую количеству проектов, переменной x2. Таким образом, граничная линия, разделяющая синие и оранжевые точки, будет иметь линейное уравнение:

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

Теперь всякий раз, когда мы хотим выяснить, подходит ли новый ученик критериям отбора, мы вводим каждое из значений в это уравнение, и если результат положительный, мы принимаем ученика, в противном случае - нет. Давайте поставим 2,7 как средний балл и 8 в число проектов. Получаем 3,9 балла. Учащийся имеет право!

В более общем виде у нас будет уравнение для модели как:

или в векторной форме как:

где

и

и мы просто берем произведение двух векторов. По соглашению мы будем называть W весами, x - входными данными, а b - смещением. Мы можем пометить положительные оценки как 1 (синие точки), а отрицательные - как 0 (оранжевые точки).

Наконец, прогноз нашей модели будет следующим:

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

В этой статье я остановлюсь прямо здесь, и я надеюсь, что к настоящему времени у вас есть некоторое представление о проблемах классификации, о том, как они работают и как алгоритмы пытаются находить прогнозы. Это был простой фон, который я хотел представить, прежде чем мы углубимся в погрузиться в удивительный мир нейронных сетей. До следующего раза, прощай!

Предложения по улучшению приветствуются :)