Вештачката интелигенција (ВИ) се здоби со значителна количина на популарност во последниве години.
Ако сте софтверски инженер, компјутерски научник или општо љубител на науката за податоци, тогаш веројатно сте заинтригирани од неверојатните апликации за обработка на слики, препознавање шаблони и откривање на објекти обезбедени од ова поле.
Најважната подобла на вештачката интелигенција за која веројатно сте слушнале е длабокото учење. Ова поле се фокусира на моќни алгоритми (инструкции за компјутерска програма) моделирани според функционалноста на човечкиот мозок познати како Нервни мрежи.
Во оваа статија, ќе го разгледаме концептот на невронски мрежи и како да се изгради, компајлира, прилагоди и оцени овие модели користејќи Пајтон.
Нервни мрежи
Невралните мрежи или НН се серија на алгоритми моделирани според биолошката активност на човечкиот мозок. Невронските мрежи се состојат од јазли, наречени и неврони.
Збирка вертикални јазли се познати како слоеви. Моделот се состои од еден влез, еден излез и голем број скриени слоеви. Секој слој се состои од јазли, наречени и неврони, каде што се одвиваат пресметките.
На следниот дијаграм, круговите ги претставуваат јазлите, а вертикалната збирка јазли ги претставуваат слоевите. Во овој модел има три слоја.
Јазлите од еден слој се поврзани со следниот слој преку далноводи како што се гледа подолу.
Нашата база на податоци се состои од означени податоци. Ова значи дека на секој податочен ентитет му е доделена одредена вредност на името.
Така, за базата на податоци за класификација на животни ќе имаме слики од мачки и кучиња како наши податоци, со „мачка“ и „куче“ како наши етикети.
Важно е да се напомене дека етикетите треба да се претворат во нумерички вредности за нашиот модел да има смисла од нив, така што нашите животински етикети стануваат „0“ за мачка и „1“ за куче. И податоците и етикетите се пренесуваат низ моделот.
Учење
Податоците се доставуваат до моделот еден по еден ентитет. Овие податоци се поделени на парчиња и се пренесуваат низ секој јазол на моделот. Јазлите вршат математички операции на овие делови.
Не треба да ги знаете математичките функции или пресметки за ова упатство, но важно е да имате општа идеја за тоа како функционираат овие модели. По серија пресметки во еден слој, податоците се пренесуваат на следниот слој и така натаму.
Откако ќе се заврши, нашиот модел ја предвидува ознаката со податоци на излезниот слој (на пример, во проблем со класификација на животни добиваме предвидување „0“ за мачка).
Моделот потоа продолжува да ја споредува оваа предвидена вредност со онаа на вистинската вредност на етикетата.
Ако вредностите се совпаѓаат, нашиот модел ќе го земе следниот влез, но ако вредностите се разликуваат, моделот ќе ја пресмета разликата помеѓу двете вредности, наречена загуба, и ќе ги прилагоди пресметките на јазлите за да произведе соодветни етикети следниот пат.
Рамки за длабоко учење
За да изградиме невронски мрежи во код, треба да увеземе Рамки за длабоко учење познати како библиотеки кои ја користат нашата интегрирана развојна средина (IDE).
Овие рамки се збирка на однапред напишани функции кои ќе ни помогнат во ова упатство. Ќе ја користиме рамката Keras за да го изградиме нашиот модел.
Керас е библиотека на Python која користи длабоко учење и вештачка интелигенција наречена позадина Проток на тензор лесно да креирате NN во форма на едноставни секвенцијални модели.
Keras, исто така, доаѓа со свои веќе постоечки модели кои исто така може да се користат. За ова упатство, ќе креираме сопствен модел користејќи Keras.
Можете да дознаете повеќе за оваа рамка за длабоко учење од Веб-страница Керас.
Изградба на невронска мрежа (упатство)
Ајде да продолжиме со изградбата на невронска мрежа користејќи Python.
Изјава за проблем
Невронските мрежи се еден вид решение за проблемите базирани на вештачка интелигенција. За ова упатство ќе ги разгледаме податоците за дијабет кај Индијанците на Пима, кои се достапни овде.
ICU Machine Learning ја состави оваа база на податоци и содржи медицинска евиденција на индиски пациенти. Нашиот модел треба да предвиди дали пациентот има почеток на дијабетес во рок од 5 години или не.
Се вчитува збир на податоци
Нашата база на податоци е единствена CSV-датотека наречена „diabetes.csv“ со која лесно може да се манипулира со помош на Microsoft Excel.
Пред да го креираме нашиот модел, треба да ја увеземе нашата база на податоци. Користејќи го следниот код, можете да го направите ова:
увезете панди како пд
податоци = pd.read_csv ('diabetes.csv')
x = data.drop („Исход“)
y = податоци [„Исход“]
Тука го користиме Панди библиотека за да може да манипулира со нашите податоци CSV-датотеки, read_csv() е вградена функција на Pandas која ни овозможува да ги складираме вредностите во нашата датотека во променлива наречена „податоци“.
Променливата x ја содржи нашата база на податоци без податоците за исходот (етикетите). Ова го постигнуваме со функцијата data.drop() која ги отстранува ознаките за x, додека y ги содржи само податоците за исходот (етикетата).
Градење на секвенцијален модел
Чекор 1: Увоз на библиотеки
Прво, треба да ги увеземе TensorFlow и Keras, заедно со одредени параметри потребни за нашиот модел. Следниот код ни овозможува да го направиме ова:
увезете тензорфлук како tf
од тензорфлоу увозни кераси
од tensorflow.keras.модели увезуваат Секвенцијален
од tensorflow.keras.layers import Активирање, густо
од tensorflow.keras.оптимизатори увезуваат Адам
од tensorflow.keras.metrics import categorical_crossentropy
За нашиот модел увезуваме густи слоеви. Овие се целосно поврзани слоеви; т.е. секој јазол во еден слој е целосно поврзан со друг јазол во следниот слој.
Увезуваме и ан активирање функција потребна за скалирање на податоците испратени до јазлите. Оптимизатори исто така се увезени за да се минимизира загубата.
Адам е познат оптимизатор што ги прави поефикасни пресметките на јазлите за ажурирање на нашиот модел, заедно со categorical_crossentropy што е типот на функцијата загуба (ја пресметува разликата помеѓу реалните и предвидените вредности на етикетата) што ќе ја користиме.
Чекор 2: Дизајнирање на нашиот модел
Моделот што го создавам има еден влезен (со 16 единици), еден скриен (со 32 единици) и еден излезен (со 2 единици) слој. Овие бројки не се фиксни и целосно ќе зависат од дадениот проблем.
Поставувањето точен број на единици и слоеви е процес кој може да се подобри прекувремено преку пракса. Активирањето одговара на видот на скалирање што ќе го извршиме на нашите податоци пред да ги пренесеме низ јазол.
Relu и Softmax се познати функции за активирање за оваа задача.
модел = секвенцијален([
Густи (единици = 16, влез_облик = (1,), активирање = 'релу'),
Густи (единици = 32, активирање = 'relu'),
Густи (единици = 2, активирање = 'softmax')
])
Еве како треба да изгледа резимето на моделот:
Тренирање на моделот
Нашиот модел ќе биде обучен во два чекори, првиот е компајлирање на моделот (склопување на моделот) и следниот е вклопување на моделот на дадена база на податоци.
Ова може да се направи со помош на функцијата model.compile() проследена со функцијата model.fit().
model.compile(оптимизатор = Адам (стапка на_учење = 0.0001), загуба = 'бинарна_кросентропија', метрика = ['прецизност'])
model.fit(x, y, епохи = 30, серија_големина = 10)
Одредувањето на метриката за „точност“ ни овозможува да ја набљудуваме точноста на нашиот модел за време на обуката.
Бидејќи нашите етикети се во форма на 1 и 0, ќе користиме функција на бинарна загуба за да ја пресметаме разликата помеѓу вистинските и предвидените ознаки.
Базата на податоци исто така се дели на серии од 10 (големина_серија) и ќе биде пренесена низ моделот 30 пати (епохи). За дадена база на податоци, x би бил податокот, а y би биле ознаките што одговараат на податоците.
Модел за тестирање со помош на предвидувања
За да го оцениме нашиот модел, правиме предвидувања за податоците од тестот користејќи ја функцијата предвиди().
предвидувања = модел.предвиди(x)
И тоа е тоа!
Сега треба да имате добро разбирање за Длабоко учење апликација, невронски мрежи, како тие функционираат воопшто и како да се изгради, обучи и тестира модел во кодот на Python.
Се надевам дека ова упатство ќе ви даде почеток за создавање и распоредување на сопствени модели за длабоко учење.
Кажете ни во коментарите дали статијата е корисна.
Оставете Одговор