Мы выкарыстоўваем файлы cookie на гэтым сайце для паляпшэння вашага вопыту карыстання.
Для больш падрабязнай інфармацыі азнаёмцеся з Палітыка канфідэнцыяльнасці

AI
ML/DL
AI platform
Скруткавая нейронная сетка з нуля. Слой актывацыі.
01.10.2024

У дадзеным артыкуле будуць разгледжаны актывацыйныя слаі, іх прызначэнне і розныя актывацыйны функцыі.

 

Навошта патрэбны слаі актывацыі?

 

Нейронныя сеткі па сутнасці з’яўляюцца звычайнымі функцыямі, якія змяшчаюць велізарны лік параметраў, аднак выконваюць даволі простыя аперацыі. Калі разглядаць нейронныя сеткі прамога распаўсюджвання, то можна заўважыць, што аперацыі, якія выконваюцца кожным слоем, з’яўляюцца звычайнымі лінейнымі пераўтварэннямі, а таму могуць быць без працы заменены на адну вялікую матрыцу. Такія пераўтварэнні не здольныя апраксімаваць адвольную функцыю з зададзенай дакладнасцю, а таму неабходна ўносіць нелінейнасці на кожным слаі. Таму пасля паўназвязнага (і, звычайна, пасля любога іншага навучанага) слоя заўсёды ставіцца слой актывацыі. З-за падобных змяненняў ужо нельга замяніць усе матрыцы слаёў на адну матрыцу, якая выконвае эквівалентнае пераўтварэнне. Гэта дазваляе ствараць незвычайна складаныя пераўтварэнні ўваходных даных у выходныя, затрачваючы пры гэтым мінімальны лік намаганняў.

 

Што такое слаі актывацыі?

 

Слой актывацыі – гэта слой, які прымяняе некаторую (звычайна) нескладаную функцыю да кожнай кропцы ўваходнага тэнзара. Існуюць таксама функцыі актывацыі, якія залежаць ад усіх значэнняў адразу (напрыклад, softmax), але сутнасць застаецца той жа: значэнні ўваходнага тэнзара пераўтворацца ў выходныя значэнні з дапамогай некаторай функцыі.

 

Якія бываюць віды функцый актывацыі?

 

Функцый актывацыі існуе даволі шмат. Найбольш вядомымі з’яўляюцца сігмаідальная (sigmoid), гіпербалічны тангенс (tanh), выпрамляльнік (ReLU) і функцыя мяккага максімуму (softmax). Таксама нярэдка сустракаюцца такія функцыі актывацыі, як LeakyReLU, ELU, parametric ReLU, SoftSign і іншыя. Важнай асаблівасцю функцый актывацыі з’яўляецца іх дыферэнцыруемасць (хоць для некаторых функцый гэта выконваецца не заўсёды), паколькі пры зваротным распаўсюджванні памылкі неабходна вылічаць градыенты, якія выкарыстоўваюць вытворную функцыю актывацыі. У прыведзеным ніжэй спісе можна параўнаць розныя функцыі актывацыі:

 

Sigmoid:

 

Функцыя:
Вытворная:
Вобласть значэнняў:          (0, 1)

Графікі функцыі і вытворнай:

  • Tanh
Функцыя:
Вытворная:
Вобласть значэнняў:       (-1, 1)

Графікі функцыі і вытворнай:

  • ReLU
Функцыя: x, x > 0

0, x ≤ 0

Вытворная: x, x > 0

0, x ≤ 0

Вобласть значэнняў: [0, +∞)

 

Графікі функцыі і вытворнай:

  • Leaky ReLU
Функцыя: x, x > 0

αx, x ≤ 0

Вытворная: 1, x > 0

α, x ≤ 0

Вобласть значэнняў: (-∞, +∞)

 

Графікі функцыі і вытворнай:

  • ELU

 

Функцыя: x, x > 0

α(ex – 1), x ≤ 0

Вытворная: 1, x > 0

αex, x ≤ 0

Вобласть значэнняў: [-α, +∞)

 

Графікі функцыі і вытворнай:

  • Softplus
Функцыя: ln(1 + ex)
Вытворная:
Вобласть значэнняў: (0, +∞)

Графікі функцыі і вытворнай:

  • Softsign
Функцыя:
Вытворная:
Вобласть значэнняў: (-1, 1)

 

Графікі функцыі і вытворнай:

Як выбраць функцыю актывацыі?

 

Паглядзеўшы на гэты спіс актывацыйных функцый, узнікае цалкам лагічнае пытанне: якую функцыю выбраць для рэалізацыі нейроннай сеткі? Для кожнай нейроннай сеткі неабходна выбіраць найбольш прыдатную функцыю. Калі вядомы некаторыя характарыстыкі функцыі, якую трэба апраксімаваць сеткай, то трэба выбраць функцыю, што лепш за ўсё яе набліжае і прыводзіць да больш хуткай збежнасці.

Напрыклад, калі стаіць задача класіфікацыі, то зручней за ўсё выкарыстоўваць сігмаідальную функцыю актывацыі, паколькі яна валодае ўсімі ўласцівасцямі класіфікатара (адлюстроўвае ўваходныя значэнні ў верагоднасці). Некалькі сігмаідальных функцый змогуць правесці класіфікацыю лепш, чым некалькі лінейных выпрамляльнікаў (ReLU).

Аднак зусім неабавязкова браць функцыю са спісу вышэй. Нішто не перашкаджае стварыць сваю ўласную функцыю, якая задавальняе патрэбам рэалізацыі нейроннай сеткі. У дадзеным пытанні можна і трэба эксперыментаваць: можна пачаць з ReLU як з годнага апраксіматара і паглядзець на хуткасць збежнасці, а затым выбраць любую іншую функцыю і параўнаць вынік. Калі стала лепш, мае сэнс выбраць яе і працягнуць эксперыменты, а ў адваротным выпадку спыніцца на бягучай.

У дадзеным артыкуле былі разгледжаны розныя функцыі актывацыі і апісаны стратэгіі выбару канкрэтнай функцыі для пабудовы сеткі.