Штучны інтэлект (AI) за апошнія гады набыў значную папулярнасць.
Калі вы інжынер-праграміст, інфарматык ці энтузіяст навукі аб дадзеных у цэлым, то, верагодна, вас заінтрыгуюць дзіўныя прыкладанні для апрацоўкі малюнкаў, распазнавання вобразаў і выяўлення аб'ектаў, якія прадстаўляюцца гэтай сферай.
Самае важнае падполле штучнага інтэлекту, пра якое вы, напэўна, чулі, - гэта глыбокае навучанне. Гэта поле сканцэнтравана на магутных алгарытмах (інструкцыях камп'ютарных праграм), створаных паводле функцый чалавечага мозгу, вядомых як Нейронавыя сеткі.
У гэтым артыкуле мы разгледзім канцэпцыю нейронавых сетак і тое, як ствараць, кампіляваць, падганяць і ацэньваць гэтыя мадэлі з дапамогай Пітон.
Нейронавыя сеткі
Нейронавыя сеткі, або НМ, - гэта шэраг алгарытмаў, створаных паводле біялагічнай актыўнасці чалавечага мозгу. Нейронавыя сеткі складаюцца з вузлоў, якія таксама называюць нейронамі.
Набор вертыкальных вузлоў вядомы як слаі. Мадэль складаецца з аднаго ўваходу, аднаго выхаду і шэрагу схаваных слаёў. Кожны пласт складаецца з вузлоў, таксама званых нейронамі, дзе адбываюцца вылічэнні.
На наступнай дыяграме кругі ўяўляюць вузлы, а вертыкальная калекцыя вузлоў - пласты. У гэтай мадэлі тры пласта.
Вузлы аднаго пласта злучаны з наступным пластом праз лініі перадачы, як паказана ніжэй.
Наш набор даных складаецца з пазначаных даных. Гэта азначае, што кожнай сутнасці дадзеных было прысвоена пэўнае значэнне імя.
Такім чынам, для набору дадзеных па класіфікацыі жывёл мы будзем мець выявы катоў і сабак у якасці даных з пазнакамі «кот» і «сабака».
Важна адзначыць, што этыкеткі павінны быць пераўтвораны ў лікавыя значэнні, каб наша мадэль мела сэнс, таму нашы этыкеткі жывёл стануць «0» для ката і «1» для сабакі. І даныя, і цэтлікі перадаюцца праз мадэль.
Вывучэнне
Даныя перадаюцца ў мадэль па адной сутнасці. Гэтыя даныя разбіваюцца на кавалкі і праходзяць праз кожны вузел мадэлі. Вузлы выконваюць матэматычныя аперацыі над гэтымі кавалкамі.
Вам не трэба ведаць матэматычныя функцыі або разлікі для гэтага падручніка, але важна мець агульнае ўяўленне аб тым, як працуюць гэтыя мадэлі. Пасля шэрагу вылічэнняў на адным узроўні даныя перадаюцца на наступны ўзровень і гэтак далей.
Пасля завяршэння наша мадэль прадказвае метку даных на выхадным узроўні (напрыклад, у задачы класіфікацыі жывёл мы атрымліваем прагноз «0» для кошкі).
Затым мадэль пераходзіць да параўнання гэтага прагназаванага значэння з фактычным значэннем меткі.
Калі значэнні супадаюць, наша мадэль возьме наступны ўваход, але калі значэнні адрозніваюцца, мадэль вылічыць розніцу паміж абодвума значэннямі, што называецца стратай, і адрэгулюе вылічэнні вузла, каб у наступны раз стварыць адпаведныя пазнакі.
Рамкі глыбокага навучання
Каб пабудаваць нейронныя сеткі ў кодзе, нам трэба імпартаваць Фреймворкі глыбокага навучання вядомыя як бібліятэкі, якія выкарыстоўваюць наша інтэграванае асяроддзе распрацоўкі (IDE).
Гэтыя фрэймворкі ўяўляюць сабой збор загадзя напісаных функцый, якія дапамогуць нам у гэтым уроку. Мы будзем выкарыстоўваць фрэймворк Keras для стварэння нашай мадэлі.
Keras - гэта бібліятэка Python, якая выкарыстоўвае бэкэнд глыбокага навучання і штучнага інтэлекту пад назвай Тэнзорны паток з лёгкасцю ствараць НМ у выглядзе простых паслядоўных мадэляў.
Keras таксама пастаўляецца са сваімі ўжо існуючымі мадэлямі, якія таксама можна выкарыстоўваць. У гэтым уроку мы будзем ствараць уласную мадэль з дапамогай Keras.
Вы можаце даведацца больш аб гэтай структуры Deep Learning на Сайт Keras.
Стварэнне нейронавай сеткі (падручнік)
Давайце пяройдзем да стварэння нейроннай сеткі з выкарыстаннем Python.
Пастаноўка праблемы
Нейронавыя сеткі - гэта тып рашэння праблем на аснове штучнага інтэлекту. У гэтым уроку мы разгледзім даступныя даныя аб дыябеце індзейцаў Піма тут.
UCI Машыннае навучанне сабрала гэты набор даных і змяшчае медыцынскія запісы індыйскіх пацыентаў. Наша мадэль павінна прадказаць, ці з'явіцца ў пацыента дыябет на працягу 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 імпарт keras
з tensorflow.keras.models паслядоўны імпарт
з tensorflow.keras.layers імпартаваць актывацыю, шчыльную
з tensorflow.keras.optimizers імпартаваць Адама
з tensorflow.keras.metrics імпартаваць categorical_crossentropy
Для нашай мадэлі мы імпартуем шчыльныя пласты. Гэта цалкам звязаныя пласты; г.зн., кожны вузел у слоі цалкам звязаны з іншым вузлом у наступным слоі.
Мы таксама імпартуем activation функцыя, неабходная для маштабавання дадзеных, адпраўленых на вузлы. Аптымізатары таксама былі імпартаваныя, каб мінімізаваць страты.
Адам - гэта вядомы аптымізатар, які робіць разлікі вузлоў абнаўлення нашай мадэлі больш эфектыўнымі, а таксама катэгарыяльная_кросентрапія, якая ёсць тып функцыі страт (разлічвае розніцу паміж фактычнымі і прадказанымі значэннямі меткі), якую мы будзем выкарыстоўваць.
Крок 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), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, эпохі = 30, памер_партыі = 10)
Вызначэнне метрыкі «дакладнасць» дазваляе нам назіраць за дакладнасцю нашай мадэлі падчас навучання.
Паколькі нашы меткі маюць форму 1 і 0, мы будзем выкарыстоўваць двайковую функцыю страт для вылічэння розніцы паміж фактычнымі і прагназаванымі меткамі.
Набор даных таксама разбіваецца на партыі па 10 (памер_пакета) і будзе праходзіць праз мадэль 30 разоў (эпохі). Для дадзенага набору даных x будзе данымі, а y — пазнакамі, якія адпавядаюць даным.
Тэставанне мадэлі з выкарыстаннем прагнозаў
Каб ацаніць нашу мадэль, мы робім прагнозы на тэставых дадзеных з дапамогай функцыі predict().
прагнозы = model.predict(x)
І ўсё!
Цяпер вы павінны добра разумець глыбокае вывучэнне прыкладання, нейронавыя сеткі, як яны працуюць у цэлым і як ствараць, навучаць і тэставаць мадэль у кодзе Python.
Я спадзяюся, што гэты падручнік дасць вам старт для стварэння і разгортвання ўласных мадэляў глыбокага навучання.
Дайце нам ведаць у каментарах, калі артыкул быў карысным.
Пакінуць каментар