Изкуственият интелект (AI) придоби значителна популярност през последните години.
Ако сте софтуерен инженер, компютърен учен или като цяло ентусиаст на науката за данни, тогава вероятно сте заинтригувани от невероятните приложения за обработка на изображения, разпознаване на модели и откриване на обекти, предоставени от тази област.
Най-важното подполе на AI, за което вероятно сте чували, е дълбокото обучение. Това поле се фокусира върху мощни алгоритми (инструкции за компютърна програма), моделирани след функционалност на човешкия мозък, известна като Невронни мрежи.
В тази статия ще разгледаме концепцията за невронни мрежи и как да изградим, компилираме, напаснем и оценим тези модели с помощта на Питон.
Невронни мрежи
Невронните мрежи или NN са поредица от алгоритми, моделирани след биологичната активност на човешкия мозък. Невронните мрежи се състоят от възли, наричани още неврони.
Колекция от вертикални възли са известни като слоеве. Моделът се състои от един вход, един изход и няколко скрити слоеве. Всеки слой се състои от възли, наричани още неврони, където се извършват изчисленията.
В следващата диаграма кръговете представляват възлите, а вертикалната колекция от възли представлява слоевете. В този модел има три слоя.
Възлите на един слой са свързани към следващия слой чрез предавателни линии, както се вижда по-долу.
Нашият набор от данни се състои от етикетирани данни. Това означава, че на всеки обект от данни е присвоена определена стойност на име.
Така че за набор от данни за класификация на животни ще имаме изображения на котки и кучета като наши данни, с „котка“ и „куче“ като наши етикети.
Важно е да се отбележи, че етикетите трябва да бъдат преобразувани в числови стойности, за да може нашият модел да ги осмисли, така че нашите етикети за животни стават „0“ за котка и „1“ за куче. И данните, и етикетите се предават през модела.
Обучение
Данните се подават към модела един по един обект. Тези данни се разбиват на парчета и се предават през всеки възел на модела. Възлите извършват математически операции върху тези парчета.
Не е необходимо да знаете математическите функции или изчисленията за този урок, но е важно да имате обща представа за това как работят тези модели. След серия от изчисления в един слой, данните се предават на следващия слой и т.н.
След като бъде завършен, нашият модел предвижда етикета на данните в изходния слой (например, в проблем за класификация на животни получаваме прогноза „0“ за котка).
След това моделът пристъпва към сравняване на тази прогнозирана стойност с тази на действителната стойност на етикета.
Ако стойностите съвпадат, нашият модел ще приеме следващия вход, но ако стойностите се различават, моделът ще изчисли разликата между двете стойности, наречени загуба, и ще коригира изчисленията на възела, за да произведе съответстващи етикети следващия път.
Рамки за дълбоко обучение
За да изградим невронни мрежи в код, трябва да импортираме Рамки за дълбоко обучение известни като библиотеки, използващи нашата интегрирана среда за разработка (IDE).
Тези рамки са колекция от предварително написани функции, които ще ни помогнат в този урок. Ще използваме рамката Keras, за да изградим нашия модел.
Keras е библиотека на Python, която използва задълбочено обучение и бекенд на изкуствен интелект, наречен Тензорен поток за създаване на NN под формата на прости последователни модели с лекота.
Keras също се предлага със свои собствени вече съществуващи модели, които също могат да се използват. За този урок ще създадем наш собствен модел, използвайки Keras.
Можете да научите повече за тази рамка за дълбоко обучение от Уебсайт на Keras.
Изграждане на невронна мрежа (урок)
Нека да преминем към изграждането на невронна мрежа с помощта на Python.
Декларация за проблема
Невронните мрежи са вид решение на проблеми, базирани на AI. За този урок ще разгледаме данните за диабета на индианците Пима, които са налични тук.
ICU Машинното обучение е компилирало този набор от данни и съдържа медицински досиета на индийски пациенти. Нашият модел трябва да предвиди дали пациентът има начало на диабет в рамките на 5 години или не.
Зареждане на набор от данни
Нашият набор от данни е един CSV файл, наречен 'diabetes.csv', който може лесно да се манипулира с помощта на Microsoft Excel.
Преди да създадем нашия модел, трябва да импортираме нашия набор от данни. С помощта на следния код можете да направите това:
импортирайте панди като pd
данни = pd.read_csv('diabetes.csv')
x = data.drop(„Резултат“)
y = данни [„Резултат“]
Тук използваме Пандите библиотека, за да можем да манипулираме данните от нашите CSV файлове, read_csv() е вградена функция на Pandas, която ни позволява да съхраняваме стойностите в нашия файл в променлива, наречена 'data'.
Променливата x съдържа нашия набор от данни без данните за резултата (етикетите). Постигаме това с функцията data.drop(), която премахва етикетите за x, докато y съдържа само данните за резултата (етикета).
Изграждане на последователен модел
Стъпка 1: Импортиране на библиотеки
Първо, трябва да импортираме TensorFlow и Keras, заедно с определени параметри, необходими за нашия модел. Следният код ни позволява да направим това:
импортирайте tensorflow като tf
от tensorflow import keras
от tensorflow.keras.models импортирайте последователно
от tensorflow.keras.layers импорт Активиране, плътен
от tensorflow.keras.optimizers импортира Адам
от tensorflow.keras.metrics импортирайте categorical_crossentropy
За нашия модел импортираме плътни слоеве. Това са напълно свързани слоеве; т.е. всеки възел в един слой е напълно свързан с друг възел в следващия слой.
Ние също така внасяме активиране функция, необходима за мащабиране на данните, изпратени до възлите. Оптимизатори също са внесени, за да се сведат до минимум загубите.
Adam е известен оптимизатор, който прави изчисленията на възела за актуализиране на нашия модел по-ефективно, наред с categorical_crossentropy, което е вида на функцията за загуба (изчислява разликата между действителните и предвидените стойности на етикета), която ще използваме.
Стъпка 2: Проектиране на нашия модел
Моделът, който създавам, има един входен (с 16 единици), един скрит (с 32 единици) и един изходен (с 2 единици) слой. Тези числа не са фиксирани и ще зависят изцяло от дадения проблем.
Задаването на точния брой единици и слоеве е процес, който може да се подобри извънредно чрез практика. Активирането съответства на типа мащабиране, което ще извършим върху нашите данни, преди да ги преминем през възел.
Relu и Softmax са известни функции за активиране за тази задача.
модел = Последователен([
Плътна (единици = 16, input_shape = (1,), активиране = 'relu'),
Плътно (единици = 32, активиране = 'relu'),
Плътно (единици = 2, активиране = 'softmax')
])
Ето как трябва да изглежда обобщението на модела:
Обучение на модела
Нашият модел ще бъде обучен в две стъпки, като първата е компилиране на модела (събиране на модела) и следващата е напасване на модела към даден набор от данни.
Това може да стане с помощта на функцията model.compile(), последвана от функцията model.fit().
model.compile(optimizer = Adam(learning_rate = 0.0001), загуба = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, епохи = 30, размер на партидата = 10)
Посочването на метриката „точност“ ни позволява да наблюдаваме точността на нашия модел по време на обучение.
Тъй като нашите етикети са под формата на 1 и 0, ще използваме двоична функция за загуба, за да изчислим разликата между действителните и прогнозираните етикети.
Наборът от данни също се разделя на партиди от 10 (batch_size) и ще бъде прехвърлен през модела 30 пъти (епохи). За даден набор от данни x ще бъдат данните, а y ще бъдат етикетите, съответстващи на данните.
Тестване на модела с помощта на прогнози
За да оценим нашия модел, правим прогнози за тестовите данни, използвайки функцията predict().
прогнози = model.predict(x)
И това е!
Сега трябва да имате добро разбиране на Дълбоко обучение приложение, невронни мрежи, как работят като цяло и как да се изгради, обучава и тества модел в код на Python.
Надявам се този урок да ви даде началния старт да създавате и внедрявате свои собствени модели за дълбоко обучение.
Кажете ни в коментарите дали статията е била полезна.
Оставете коментар