
German: 
Was geht ab, alle miteinander und herzlich Willkommen zu einem neuen Kapitel in der Tutorial-Serie über maschinelles Lernen, Deep Learning, Tensor Flow und natürlich Python.

Ukrainian: 
Привіт всім і ласкаво просимо до новго розділу в Курсі Машинного Навчання
і це Глибоке Навчання з нейронними мережами та TenserFlow, і звичайно Python.
Нейронні мережі не є новими, але на даний час вони є останнім словом техніки
і вони досягають речей, які пректично відсутні в інших моделях машинного навчання на даний час
Але це не цілком новітньо тому що ідея нейронних мереж звявилася на початку 1940-х років.
Але в основному вони були нічого не варті майже дотепер.
Є кілька речей з 1940-х, які більше нагадують концепт і майже немає людей які хотіли б щось з цим робити.
І тільки на початку 1970-х, я думаю 1974-го Пол Вербос
відкрив новий шлях щоб неруалізувати поріг, про який ми поговормо потім.
Але цей вид маленької допомоги був нічого не вартий приблизно до 2011 або 2012.

Ukrainian: 
коли глибоке навчання і масивні збори даних з'явилися разом з нейронними мережами
що роблять неймовірні речі і навіть цей перший приклад що я збираюся вам показати
я думаю є дуже потужним щоб показати якими неймовірними є нейронні мережі на створенні моделі даних
В будь-якому разі, нейронна мережа це просто біологічно підштовхнута ідея що прийшла з 1940-х
коли ми мали дуже мало знань про наш мозок
і ми все ще майже нвчого не знаємо про наш мозок
ми знаєму дуже багто всього, але не знаємо як це працює
Так що це просто біологічно підштовхнута модель і для нас не є потрібде знання як все працює
як ми мислимо або вчимося
Це в більшості ми думаємо як ми можемо мислити або щось схоже на це.
В будь якому разі - достатньо історії
Тому давайте перейдемо прямо до нейронних мереж
Отже ми зараз пробіжимося по теорії нейронних мереж
і як вони працюють. Так що нейронна мережа очевидно є мережею, яка складається, як ви вже здогадалися, з нейронів
Отже, як же нейрони виглядають?

Ukrainian: 
Для початку вам потрібно кілька речей названих дендритами, які зєднуються з клітинним ядром і потм йдуть до аксонових закінчень.
Які мають більш хвилясті лінії
Отже наші дендрити
Що знаходяться тут
Наше ядро - це маленьке зелене кільце
Я збираюсь написати Ядро
І потім, ми маємо наші аксони
І тут аксонові закінчення
Але звичайно нейронна мережа складається з багатьох нейронів
Одного нейрона недостатньо, але двох - так
Отже інший нейрон може бути тут
Так що ось це дендрити, які підклбчаються до ядра, і ось тут аксон та аксонові закінчення
І наші теперішні знання стверджують що нейрони не є з'єднаними.

Ukrainian: 
Тут є пусте місце, всередині якого повідомлення вссилаються. І це є наш синапс
На даний момент, жоден з цих термінів не є доволі цікавим в нейроні і нейронній мережі і в штучній нейронній мережі.
Отже це - біологічна нейронна мережа і в будь який час я буду відсилатися до біологічної нейронної мережі
Я буду її називати біологічна нейронна мережа, але в даному відео це є штучна нейронна мережа
Я очвкую що ви зрозуміли про що я говорю, коли кажу слово штучний
В будь якому разі в даній моделі нейронної мережі неммає нічого достатньо цікавого
використовуючи дендрити, синапси або аксонові закінчення.
Справді нічого, що б моголо бути цікавим
Але це є видом моделювання, після біологічної моделі нейронної мережі, яку ми намагалися змоделювати
І що станеться якщо в соновному ви маєте вхідні дані
які знаходяться тут, і в нашому випадку ми маємо 3 входи

Ukrainian: 
Отже ми почнаємо з сирих даних, і це може бути 1, 0 і 0 або щось в тому роді
Ці входи ідуть до ядра, що в теоріх щось робить і висилає дані до аксонів, і якщо все добре вони пропускають дані через синапс до наступного нейрону
Щось схоже на це відбувається, але інколи може щось трапитись в нейроні
і тут немає комунікації
Це теорія як нейрони в нашому мозку працюють
Зараз давайте візьмемо цю модель
і нейрон в сенсі з яким ми будемо мати справу в нашій штучній мережі. Давайте її змоделюємо
Отже модель штучної нейронної мережі є цілком схожа.
В основному все буде починатися з сирих даних і в кінцевому результаті це будуть просто вхідні дані
тому я буду просто їх називати вхідні дані

Ukrainian: 
Отже давайте назвемо наші вхідні дані: х1, х2 і х3
в реальності, наприклад ви можете мати 784 справжніх вхідних значень
це може бути доволі велике число
отже ми маємо вхідні дані і те що трапиться з ними якщо ми додамо їх
Отже вони йдуть сюди
і вони є просто сумовані
і на даному етапі вони є обтяженими
отже це обтяжувачі: w1, w2 i w3
кожен з цих обтяжувачів є унікальним
тобто ми маємо оригінальні значення помножені на обтяжувачі і всі вони є додані разом
в цю суму
зараз нейрон, базуючись на вхідних даних, вмикається або ні
Отже як нам визначити коли він вмикається?
Це відбувається через порогову функцію

Ukrainian: 
Ось тут
Багато раз це показано просто як це
Добре, зачекайте
Це трохи краще
Ви могли чути що це відсилається до крокової (сходинкової) функції
Тому що це виглядає буквально як сходинка
В даному випадку це все означає так, що це є нуль
І в окремому випадку коли дані перейдуть певний поріг Х і отримане значення Y буде 1
Точно там само де ми є на осі Y зараз
Отже в певній точці, коли дані переходять поріг - нейрон ввімкнеться
але якщо дані не перейшли це поріг, нейрон не ввімкнеться
базуючитсь на звичайному нейроні,  якщо перший нейрон не включився - то і інший теж не ввімкнеться
але з штучною нейронною мережею це відповідає в більшості до нуля або одиниці
ти одна з цих двох речей
і потім ця 1 або 0 в штучній мережі проходять, як сирі вхідні дані, через інший штучний нейрон
тобто цей 0 або 1 стають цими значеннями

Ukrainian: 
це вхідні значення для наступного підключеного нейрону
і це відбувається на багатьох прихованих слоях
які ви можете мати
зараз ви можите розгубитися що до цього
але ми збираємося це змоделювати
бо це всьго-на-всього тільки 1 нейрон
зараз, перед тим як я закрию це маленьке зображення
є дещо, що я хочу поправити
це те, що люди, як правило, не використовують сходинкову функцію як поріг
просто тому що 0 або 1 не є ідеальними
краще мати щось біль широке в градації
в загальному люди не використовують сходинкової функції
вони використовують сигмоїдну функцію, яка виглядає ось так
щось таке і це називається сигмоїда, тому що це має вигляд S-форми
алк це не виглядає як це, хоча це все ж є на графі
хоча це схоже на S, але очевидно це не S
в будь якому випадку
отже це є порогова функція як звчиайно більше не є порогом
і вона називається функцією активації

Ukrainian: 
отже це є наш базовий змодельований нейрон
але це все зламається коли ви збудуєте мережу
ваші вихідні дані, назвемо їх Y - це просто функція з
з вашого Х та W (обтяжувачів), що в нашому випадку є векторами
це все
Ви можете використовувати кілька видів звязків до вашої сигмоїдної функції
але в більшості - це просто функція з ваших Х момножених на ваші значення W
вхідні дані помножені на обтяжувачі
отже це простий нейрон, але давайте порівняємо як виглядає нейронна мережа
можливо коли ви побачите нейронну мережу
ви побачите щось схоже на це: x1, x2 і просто x3 наразі
отже це наші вхідні дані. Потім ми маємо наступні нйрони
я просто намалюю перший нейрон
тобто, треба зробити більше місця тут

Ukrainian: 
з роблю один, два, три і чотири
і потім ми зробимо, можливо, один, два, три
і потім ми маємо тільки 1 тут
І що станеться якщо? Ми зробимо це. Це настравді не важливо. Давайте поговоримо секунду
Отже, всі вхідні дані проходять черехз всі нейрони в найбільш базовій моделі
Це все є зєднаним
І кожне з цих зєднань має унікальну асоціативну массу
і знову, все це є зєднане з всім цим
знову з унікальною массою
і це все теж зєднане
з цим, знову з унікальною массою

Ukrainian: 
отже це наша нейронна мережа
зараз, тут ми маємо вхід і це наш вхідний шар
і потім тут, це наш прихований шар 1
ця площа - це наш прихований шар 1
і тут ми маємо другий прихований шар
це прихований шар 2, а це наш вихід
теоретично вихід може бути 1,0,1
і 1, 0, 1 може відповідати чомусь
в багатьох випадках замість 1, 0, 1 і в нашому випадку є щось на зразок 1, 0, 0
або 0, 1, 0, щось таке
я поясню чому так, але спочатку приклад де буде все видно, і до цього можна буде доторкнутися

Ukrainian: 
отже це є глибока нейронна мережа
ми просто змодельвали глибоку нейронну мережу
чому це є глибока нейронна мережа?
тому що ми маємо другий прихований шар
якщо б ми мали тільки 1 прихований шар
це - звичайна нейронна мережа
якщо ми маємо 2 або більше прихованих шарів
ми отримаємо глибоку нейронну мережу
це настільки просто що я небуду розділяти нейронну мережу і глибоку нейронну мережу
тому що це одна і та сама річ
різгниця тільки в кількості прихованих шарів та коді якій ви збираєтеся написати
ви просто добавляєте шари, тобто моделювання 1 шару і моделювання 90 шарів
дуже схоже
я не збираєся розділяти ці 2 речі
отже це все, це все що до нейронних мереж
отже чому це забирає так багато часу щоб принести плоди і бути найкращою моделлю машинного навчання яку ми знаємо?

Ukrainian: 
Перш за все, найбільшою проблемою є необхідна кількість вхідних даних
вхідні зарактеристики як ці, необовязково мають бути великими
більш вагомим є опис того що може бути
але найбільшою проблемою на вході - це кількість прикладів які ви маєте
в першому прикладі, що ми використали, кількість прикладів дорівнює, я думаю, 60 000, які є дуже маленькими
більшість великих комерційних мереж, що роблять божевільні речі можуть мати 500 мільцонів прикладів
або щось в тому роді. Після 500 мільйонів зявляється зменшення похибки результату яка є менш помітною
але це те що займає найбільше часу на даний момент
відклик з так званою Опорно-Векторною Машиною (ОВМ), якщо слідувати за цим уроком
ми маємо щось що називається проблемою випуклої оптимізації

Ukrainian: 
ідеально випуклої в сенсі чим більше оптимізовувати актуальний граф тим більше граф оптимізації буде схожий на це
отже якщо ви хоите оптимізувативам потрібно взяти великі кроки
ми взяли забагато
тому ми беремо маленькі кроки, потім ще менші
це дуже прсто
але в нейронній мережі ваш оптимізаційний граф буде приблизно таким
божевільні речі відбуваються там
отже проблема оптимізації не є простою
але з ОВМ ми модемо базуватися на двох змінних W i B
які ми потребуємо оптимізувати
коли тут ми маємо дуже просту нейронну мережу
я не про кількість ліній, але ми маємо багато зєднать всередині, а кожне зєднання це унікальна масса (обтяжувач)
це дуже багато унікальних масс
це багато змінних
це дуже складна проблема оптимізації

Ukrainian: 
як і в математиці так і в необхідних обрахунках для машини яка мусить їх розвязати
також ви потребуєте багато даних, правильно? Ви портребуєте багато прикладів, багато зєднань. Чим більше прикладів ви маєте тим більше обтяжувачів ви потребуватимете, правильно?
Це так як унікальний збіг неприємних обставин що стають поперек дороги і не дають розвинутися нашій нейронній мережі
на сьогодні ми маємо два великі збори даних
і ми маємо комютери здатні обробити і оптимізувати ці великі збори даних
отже коли ці 2 речі стикаються - все змінюється і це дозволяє нашій нейронній мережі сяяти
Для простї класифікації, нейронна мережа є кращою в продуктивності з іншими алгоритмами ніж наприклад найновіша ОВМ

Ukrainian: 
Для певного обсягу даних ОВМ є точною на 97% коли нейронна мережа є точною на 98% або 99%
І це ті кілька процентів яких всі намагаються досягнути зараз
Це те заради чого люди присвячують роки намагаючись збільшити ці відсотки і це ж важливо
але для мене це не є чимось вражаючим як і інші речі що роблять нейронні мережі
Отже, для простої класифікації, що може робити нейронна мережа з відносно однаковою точністю.
Але що є більш врвжвючим - це аспект моделювання роботи нейронної мережі
і зараз ми не маємо чіткого розіміння як моделювання з нейронними мережами працює
Але працює вона дуже дуже добре
Тут треба багато розбиратися і аналізувати, щоб розкрити певні відповіді
але через те що у нас багато змінних з якими ми маємо справу це просто неможливо для нас

Ukrainian: 
Наприклад розглянемо наступну задачу: Джек має 12 років, Джейн має 10 років, Кейт є старшою за Джейн і молодшою від Джека.
Скільки років Кейт?
Більшість з вас, хто нічого не робили могли взяти хвилину на розвязування але відповідь є 11
І в порядку отримування відповіді ми використали трошки логіки, те що алгоритм машинного навчання не міг робити до тепер
дін може робити добру класифікацію, але не моделювання логіки або розуміння як змоделювати цю логіку
і це було до дуже недавнього часу
якщо ви хочете зробити алгоритм для відповіді на певне питання - ви мусите якось змоделювати логіку для нього
і ви повинні володіти заннями про лінгвістику і все схоже до цього
коли з нейронними мережами, ви не повинні цього робити
ви просто берете нейронну мережу і даєте їх вязку прикладів як я вам показав
порівнюєте з відповіддю і продовжуєте далі
робите це кілька мільйонів разів
або так сказати 400 мільйонів разів

Ukrainian: 
і отримуємо нейронну мережу яка може зрозуміти свою власну модель, та як моделювати логіку. І це все працює семе по собі
Це найвражаюче що є в нейронних мережах
Навіть в прикладах що ми збираємося робити в найближчих уроках
Я думаю що це вражаюче, коли актуальні вихідні дані не є дуже добрими але методологія яки ми збираємося застосувати
на вихідних даних, які ми отримаємо - є захоплюючою і неймовірною
Але в будь якому разі, достатньо цього
Одне питання яке люди можуть мати: де отримати ці необхідні мільйони прикладів?
Ви маєте кілька варіантів, деякі безплатні
Один варіант - це база даних картинок ImageNet, ви можите просто загулити це
це працює як зичайний інтернет, якщо ви не знайомі з цим - то можете покопатися в інтернет бібліотеці
і ви з цим розберетеся, та побачите як все влаштовано
отже для зображень ви можете використовувати ImageNet
Наступне - це текстові дані

Ukrainian: 
ваша перша зупинка мусть бути дамп даних з Вікіпедії. Ви можете отримати вхідний дамп Вікіпедії, що сам по собі є класним
і нейронна мережа може моделювати речі для вас, тобто ви можете робити багато цікавих речей з Вікіпедією
інші речі, такі як чат, ви можете тримати логи чатів, або взяти Reddit для вхідних і вихідних даних
для голосових даних - я справді не знаю, ніколи не чув про великі дампи голосових даних
але є сайт tatoeba.org, я не знаю як це вимовляється
в будь-якому разі ви можете подивитися на тектову версію цього уроку
і отримати всі посилання про які говорю
просто прогорніть вниз
і можливо найбільший збір даних про який я чув, він теж безплатний, це CommonCrawl.

Ukrainian: 
Більшість з вас можливо не має компютерів тому я навіть не знаю чи РС зможе це запустити, допоки ви не будете мати тони GPU в SLI.
Набагато більше GPU в SLI ніж материнська плата зможе вмістити
В буль якому разі якщо ти працюєш на когось хто має великий сервер, в тебе багато грошей і ти можеш купити AWS послуги
CommonCrawl може бути дуже добрим рішенням, тому що це так як всі вебсайти парсовані на один портал
Отже, це просто неймовірно
Можливо це петабайти в обємі, отже вам буде потрібен великикй хардрайв що зможе трмати петабайти інформації
Що ж, щасти
Отже головне зо вам потрібно це збори даних
Де ви можете занйти потрібні вам приклад з мільйонами примірників
Для прикладу, ручне письпо потребує 100 мількойнів прикладів
Я хочу перевірити одне місце, це як підфорум машинного навчання, ви можете запитати там чи в когось є збори даних

Ukrainian: 
Багато раз Google не може знайти зборів даних, і навіть я покрився жетиною коли пробував знати різні збори даних
Отже ви можете запитати когось на форумі про це
І багато людей можуть вам допомогти
В будь якому разі це повинну бути відносно очевидно чому такі компанії як Facebook і Google
є дуже великими в AI і нейронних мережах, тому що вони мають необхідні томи даних щоб робити дуже цікаві, але інколи страші речі
Отже ми зараз на шляху, як ми будемо працювати з нашими нейроними мережами
МИ буджемо використовувати Tenserflow
це відносто ноий фреймворк від Google
він все ще в бета-версії, на момент запису відео
є інші фреймворки для роботи з нейронними мережами як diano, і вони працюють однаково
це все тому що речі які я показав вам кілька хвилин назад це просто функція з Х та W
це все

Ukrainian: 
якщо ви навчитесь робити це все в tenserflow ви повинні знати як зробити все в тому самому diano
вам протсо потрібно вивчити інший ситаксис але частина моделювання - та сама
нам треба просто вибрати один фреймворк, я вибираю Tenserflow
тому що він має кілька цікавих можливостей на даний момент які я хотів би використовувати в майбутньому
як розподілені обчислення
в наступному уроці ми будемо встановлювати Tenserflow
це все що ми будемо робити - інсталювати Tenserflow
якщо у вас вже є Tenserflow ви можете проспустити наступний урок
я просто хочу зробити це
тому що деякі люди можкть цього потребувати
ми будемо інсталювати Tenserflow на Ubuntu
я буду це робити на віртуальній машині на Windows
якщо ви хочете все зроби добре, або мати Tenserflow на  Ubuntu

Ukrainian: 
але це не важливо на яку ОС ви маєте заінстальований Tenserflow
я буду використовувати Ubuntu тому що це працює на Ubuntu
але якщо у вас Windows і ви ніколи не використовували віртуальної машини
ви можете слідувати наступному урокові і мати все налаштовано
але якщо у вас Мас - ви можете використовувати Tenserflow на вашому Мас
і це буде добре, також ви можете поставити Tenserflow в Docker з Windows, я ж покладу його на Ubuntu, з віртуальною машиною
в будь якому разі - це те що ми будемо робити на настуму уроці, якщо у вас є якісь питання, коментарі, проблеми - залишайте їх знизу і як завжди, дякую за перегляд, до наступного разу
