мізки напрокат

Нейросети зараз в моді, і не дарма. З їх допомогою можна, наприклад, розпізнавати предмети на картинках або, навпаки, малювати нічні кошмари Сальвадора Далі. Завдяки зручним бібліотекам найпростіші нейромережі створюються за все парою рядків коду, що не більше піде і на звернення до штучного інтелекту IBM.

Біологи досі не знають, як саме працює мозок, але принцип дії окремих елементів нервової системи непогано вивчений. Вона складається з нейронів - спеціалізованих клітин, які обмінюються між собою електрохімічними сигналами. У кожного нейрона є безліч дендритів і один аксон. Дендрити можна порівняти зі входами, через які в нейрон надходять дані, аксон ж служить його виходом. З'єднання між дендритами і аксонами називають синапсами. Вони не тільки передають сигнали, але і можуть змінювати їх амплітуду і частоту.

Перетворення, які відбуваються на рівні окремих нейронів, дуже прості, однак навіть зовсім невеликі нейронні мережі здатні на багато що. Все різноманіття поведінки хробака Caenorhabditis elegans - рух, пошук їжі, різні реакції на зовнішні подразники і багато іншого - закодовано всього в трьох сотнях нейронів. І добре черви! Навіть мурашкам вистачає 250 тисяч нейронів, а то, що вони роблять, машинам безумовно не під силу.

мізки напрокат

Майже шістдесят років тому американський дослідник Френк Розенблат спробував створити комп'ютерну систему, влаштовану за образом і подобою мозку, однак можливості його творіння були вкрай обмеженими. Інтерес до нейромереж з тих пір спалахував неодноразово, однак раз по раз з'ясовувалося, що обчислювальної потужності не вистачає на скільки-небудь просунуті нейромережі. За останнє десятиліття в цьому плані багато що змінилося.

Електромеханічний мозок з моторчиком

мізки напрокат

Машина Розенблатта називалася Mark I Perceptron. Вона призначалася для розпізнавання зображень - завдання, з якою комп'ютери досі справляються так собі. Mark I був забезпечений подобою сітківки ока: квадратною матрицею з 400 фотоелементів, двадцять по вертикалі і двадцять по горизонталі. Фотоелементи у випадковому порядку підключалися до електронних моделям нейронів, а вони, в свою чергу, до восьми виходів. Як синапсів, що з'єднують електронні нейрони, фотоелементи та виходи, Розенблатт використовував потенціометри. При навчанні перцептрона 512 крокових двигунів автоматично обертали ручки потенціометрів, регулюючи напругу на нейронах в залежності від точності результату на виході.

Ось в двох словах, як працює нейросеть. Штучний нейрон, як і справжній, має кілька входів і один вихід. У кожного входу є ваговий коефіцієнт. Змінюючи ці коефіцієнти, ми можемо навчати нейронну мережу. Залежність сигналу на виході від сигналів на вході визначає так звана функція активації.

У перцептроном Розенблатта функція активації складала вага всіх входів, на які надійшла логічна одиниця, а потім порівнювала результат з граничним значенням. Її мінус полягав у тому, що незначна зміна одного з вагових коефіцієнтів при такому підході здатне надати непропорційно великий вплив на результат. Це ускладнює навчання.

В сучасних нейронних мережах зазвичай використовують нелінійні функції активації, наприклад сигмоид. До того ж у старих нейромереж було занадто мало шарів. Зараз між входом і виходом зазвичай розташовують один або кілька прихованих шарів нейронів. Саме там відбувається все найцікавіше.

мізки напрокат

Щоб було простіше зрозуміти, про що йде мова, подивися на цю схему. Це нейронна мережа прямого поширення з одним прихованим шаром. Кожен гурток відповідає нейрону. Зліва знаходяться нейрони вхідного шару. Праворуч - нейрон вихідного шару. В середині розташовується прихований шар з чотирма нейронами. Виходи всіх нейронів вхідного шару підключені до кожного нейрона першого прихованого шару. У свою чергу, входи нейрона вихідного шару пов'язані з усіма виходами нейронів прихованого шару.

Не всі нейронні мережі влаштовані саме так. Наприклад, існують (хоча і менш поширені) мережі, у яких сигнал з нейронів подається не тільки на наступний шар, як у мережі прямого поширення з нашої схеми, але і в зворотному напрямку. Такі мережі називаються рекурентними. Повністю з'єднані шари - це теж лише один з варіантів, і однією з альтернатив ми навіть торкнемося.

Отже, давай спробуємо побудувати найпростішу нейронну мережу своїми руками і розберемося в її роботі по ходу справи. Ми будемо використовувати Python з бібліотекою Numpy (можна було б обійтися і без Numpy, але з Numpy лінійна алгебра відніме менше сил). Розглянутий приклад заснований на коді Ендрю Траска.

Нам знадобляться функції для обчислення сигмоид і її похідної:

Продовження статті є тільки передплатникам

Варіант 2. Купи одну статтю

Схожі статті