Немножко о нейронных сетях 1
На волне постов о картинках в нейросетях, мне вспомнилось, что у нас в универе был обзорный курс, что-то типа "Методы искусственного интеллекта". Захотелось освежить в памяти, ну и решил поделиться тем, что удалось вспомнить, может, кому-то будет интересно)
Итак, сама концепция нейронной сети основана на реальной биологической структуре мозга. В мозгу есть специальные нервные клетки, собственно - нейроны. Они занимаются обработкой электрических сигналов, получаемых от органов чувств при их раздражении. Например, до наших ушей дошел звук, нервные окончания в ушах начали генерировать электрические импульсы, которые уходят в мозг, а вот уже мозг интерпретирует эти импульсы как, например, музкальное произведение.
Вернемся к нейронам. Каждая отдельная клетка имеет тело и отростки (дендриты и аксон), которыми она может соединяться с другими такими клетками, образуя синапсы (сами соединения). Схематично нейрон выглядит так:
Когда электрические (или химические) сигналы проходят через связи между клетками, они могут модифицироваться, скажем, ослабляться или усиливаться. Все пришедшие в тело клетки сигналы агрегируются, а результат выдается на все выходные отростки для передачи соседним клеткам. В итоге, учитывая огромное количество нейронов в нашем мозге, получаются сложные преобразования, которые выливаются в наши мысли, идеи и решения.
Именно этот принцип положен в основу искусственных нейронных сетей: каждый нейрон связан с несколькими соседними нейронами, от которых он получает информацию, агрегирует ее, и выдает нескольким соседним нейронам дальше. Причем, когда информация проходит по синапсу, соединяющему два нейрона, она может модифицироваться.
Рассмотрим нейронную сеть, называемую перцептроном:
Она состоит из трех слоев, причем каждый нейрон связан со всеми нейронами следующего слоя и только с ними. Каждый нейрон суммирует все сигналы на входе, и, если результат больше 0 - выдает 1, а если нет - то 0.
Можно заметить, что на каждом синапсе-стрелочке написано число - это множитель, на который умножается значение при переходе по этой стрелочке. Например, если красный нейрон в результате суммирования и округления входов получил 1, то при передаче этой единицы синему нейрону она будет умножена на 0,5, и на вход этому нейрону придет значение 0,5. Данные коэффициенты называются весами синапсов.
Частный случай значения веса синапса - 0. Это будет означать, что сигнал по этому синапсу не передается, он разорван.
Сеть на картинке выглядит не очень-то полезной: ведь на вход мы можем подать всего два значения (и на выходе получаем только два). Но если увеличить количество строк, то значений можно подать очень много. Например, для обработки картинки такой сетью, на вход мы можем подать по три значения для каждого пикселя картинки, определяющие цвет этого пикселя: насыщенность красного, зеленого и синего цветов.
Понятно, что связей тогда будет огромное множество. На выходе после преобразования мы получим столько же пикселей, т.е. картинку такого же размера, но закрашенную совершенно непредсказуемыми цветами.
Нам же нужно получить результат, обладающей некоторой полезностью. Поэтому существует процесс обучения нейронной сети, который заключается в корректировке весов синапсов при оценке результата работы сети. Для выполнения этой процедуры существуют различные методы, один из которых - метод обратного распространения ошибки, ради которого и затевается эта серия постов)


если применять этот метод, то ради него серия постов должна прекращаться, а не затеваться.