Нейрондук тармактар ​​менен иштөө: мүчүлүштүктөрдү оңдоо үчүн текшерүү тизмеси

Нейрондук тармактар ​​менен иштөө: мүчүлүштүктөрдү оңдоо үчүн текшерүү тизмеси

Машина үйрөнүү программалык продуктуларынын коду көбүнчө татаал жана өтө чаташкан. Андагы мүчүлүштүктөрдү табуу жана жоюу ресурстарды көп талап кылган иш. Ал тургай эң жөнөкөй алдыга багытталган нейрон тармактары тармак архитектурасына олуттуу мамилени, салмактарды инициализациялоону жана тармакты оптималдаштырууну талап кылат. Кичинекей ката жагымсыз көйгөйлөргө алып келиши мүмкүн.

Бул макалада нейрон тармактарыңызды оңдоо алгоритми жөнүндө.

Skillbox сунуштайт: Практикалык курс Нөлдөн баштап Python иштеп чыгуучусу.

Биз эсиңизге салабыз: "Хабрдын" бардык окурмандары үчүн - "Habr" промо-кодун колдонуу менен каалаган Skillbox курсуна катталганда 10 000 рубль арзандатуу.

Алгоритм беш этаптан турат:

  • жеңил баштоо;
  • жоготууларды ырастоо;
  • аралык натыйжаларды жана байланыштарды текшерүү;
  • параметр диагностикасы;
  • ишин контролдоо.

Эгер сизге башкаларга караганда бир нерсе кызык болуп көрүнсө, дароо бул бөлүмдөргө өтсөңүз болот.

Оңой баштоо

Татаал архитектурасы, регуляризациясы жана окуу ылдамдыгын пландаштыргычы бар нейрондук тармакты оңдоо кадимкиге караганда кыйыныраак. Бул жерде биз бир аз татаал болуп жатабыз, анткени пункттун өзү мүчүлүштүктөрдү оңдоого кыйыр түрдө байланыштуу, бирок бул дагы эле маанилүү сунуш.

Жөнөкөй башталыш - бул жөнөкөйлөштүрүлгөн моделди түзүү жана аны маалыматтардын бир топтомуна (пунктуна) үйрөтүү.

Алгач биз жөнөкөйлөтүлгөн моделди түзөбүз

Тез баштоо үчүн, биз бир жашыруун катмары бар кичинекей тармакты түзүп, бардыгы туура иштегенин текшеребиз. Андан кийин биз моделди акырындап татаалдаштырып, анын структурасынын ар бир жаңы аспектисин (кошумча катмар, параметр ж.б.) текшерип, андан ары улантабыз.

Биз моделди маалыматтардын бир топтомуна (пунктуна) үйрөтөбүз

Долбооруңуз үчүн тез акыл-эсти текшерүү катары, сиз системанын туура иштеп жатканын ырастоо үчүн бир же эки окуу маалымат пунктун колдоно аласыз. Нейрондук тармак окутууда жана тестирлөөдө 100% так көрсөтүшү керек. Эгер андай болбосо, анда же модель өтө кичинекей же сизде ката бар.

Баары жакшы болсо да, улантуудан мурун моделди бир же бир нече доорго даярдаңыз.

Жоготууларды баалоо

Жоготууларды баалоо моделдин иштешин жакшыртуунун негизги жолу болуп саналат. Сиз жоготуу көйгөйгө ылайыктуу экенин жана жоготуу функциялары туура шкала боюнча бааланышын камсыз кылуу керек. Эгер сиз жоготуулардын бир нече түрүн колдонсоңуз, алардын бардыгы бирдей тартипте жана туура масштабда экенин текшериңиз.

Алгачкы жоготууларга этият болуу маанилүү. Модель кокус болжолдоо менен башталган болсо, чыныгы натыйжа күтүлгөн натыйжага канчалык жакын экенин текшериңиз. IN Андрей Карпатинин эмгектери төмөнкүлөрдү сунуштайт:: “Аз сандагы параметрлер менен баштаганда күткөн натыйжага жетишиңизди текшериңиз. Маалыматтын жоголушун дароо текшерүү жакшы (нөлгө коюлган нормалдаштыруу даражасы менен). Мисалы, Softmax классификатору бар CIFAR-10 үчүн биз баштапкы жоготуу 2.302 деп күтөбүз, анткени күтүлгөн диффузиялык ыктымалдык ар бир класс үчүн 0,1ди түзөт (анткени 10 класс бар) жана Softmax жоготуусу туура класстын терс логдук ыктымалдыгы болуп саналат. катары − ln (0.1) = 2.302.”

бинардык мисал үчүн, окшош эсептөө жөн гана класстардын ар бири үчүн жүргүзүлөт. Бул жерде, мисалы, маалыматтар: 20% 0 жана 80% 1. Күтүлгөн баштапкы жоготуу -0,2ln (0,5) -0,8ln (0,5) = 0,693147 чейин болот. Натыйжа 1ден чоң болсо, бул нейрондук тармактын салмактары туура теңдештирилбегенин же маалыматтар нормалдашпаганын көрсөтүшү мүмкүн.

Аралык натыйжаларды жана байланыштарды текшерүү

Нейрондук тармактын мүчүлүштүктөрүн оңдоо үчүн тармактын ичиндеги процесстердин динамикасын жана алар туташкан жеке аралык катмарлардын ролун түшүнүү керек. Бул жерде сиз кабылышы мүмкүн болгон жалпы каталар:

  • gradle жаңыртуулары үчүн туура эмес туюнтмалар;
  • салмак жаңыртуулары колдонулбайт;
  • жарылуучу градиенттер.

Эгерде градиенттин маанилери нөлгө барабар болсо, бул оптимизатордогу окуу ылдамдыгы өтө жай экенин же градиентти жаңыртуу үчүн туура эмес туюнтмага туш болуп жатканыңызды билдирет.

Мындан тышкары, ар бир катмардын активдештирүү функцияларынын, салмагынын жана жаңыртууларынын баалуулуктарына мониторинг жүргүзүү зарыл. Мисалы, параметрдин жаңыртууларынын чоңдугу (салмактар ​​жана кыйшаюулар) 1-e3 болушу керек.

"Dying ReLU" же деп аталган бир көрүнүш бар "жоголуп бара жаткан градиент маселеси", ReLU нейрондору анын салмактары үчүн чоң терс бурмалоо маанисин үйрөнгөндөн кийин нөлгө барабар болгондо. Бул нейрондор эч качан маалыматтардын эч бир жеринде кайра иштетилбейт.

Бул каталарды аныктоо үчүн градиентти текшерүүнү колдонсоңуз болот, бул градиентти сандык ыкма менен жакындатуу. Эгерде ал эсептелген градиенттерге жакын болсо, анда артка жайылтуу туура ишке ашырылган. Градиентти текшерүү үчүн CS231ден бул улуу ресурстарды карап көрүңүз бул жерде и бул жердежана ошондой эле сабак Бул тема боюнча Эндрю Нга.

Файзан шейх нейрон тармагын визуализациялоонун үч негизги ыкмасын көрсөтөт:

  • Preliminaries - бул бизге үйрөтүлгөн моделдин жалпы түзүлүшүн көрсөткөн жөнөкөй ыкмалар. Аларга нейрон тармагынын жеке катмарларынын фигураларынын же чыпкаларынын чыгышы жана ар бир катмардын ичиндеги параметрлер кирет.
  • Активдештирүүгө негизделген. Аларда биз алардын функцияларын түшүнүү үчүн жеке нейрондордун же нейрондордун топторунун активдешүүлөрүн чечмелейбиз.
  • Градиенттердин негизинде. Бул ыкмалар моделдик окутуунун алдыга жана артка өтүүсүнөн пайда болгон градиенттерди манипуляциялоого ыкташат (анын ичинде айкындуулук карталары жана классты активдештирүү карталары).

Жеке катмарлардын активдештирүүлөрүн жана байланыштарын визуалдаштыруу үчүн бир нече пайдалуу куралдар бар, мисалы. ConX и Тензорборд.

Нейрондук тармактар ​​менен иштөө: мүчүлүштүктөрдү оңдоо үчүн текшерүү тизмеси

Параметр диагностикасы

Нейрондук тармактарда бири-бири менен өз ара аракеттенүүчү көптөгөн параметрлер бар, бул оптималдаштырууну кыйындатат. Чындыгында, бул бөлүм адистердин активдүү изилдөөлөрүнүн предмети болуп саналат, ошондуктан төмөндөгү сунуштар бир гана кеңеш катары каралууга тийиш, алардан башталышы керек.

Пакет өлчөмү (партиянын өлчөмү) - Эгерде сиз пакеттин өлчөмү ката градиентинин так бааларын алуу үчүн жетиштүү чоң болушун кааласаңыз, бирок тармагыңызды регуляризациялоо үчүн стохастикалык градиенттин түшүүсү (SGD) үчүн кичине болушун кааласаңыз. Кичинекей партиялардын өлчөмдөрү окуу процессиндеги ызы-чуудан улам тез конвергенцияга жана андан кийин оптималдаштырууда кыйынчылыктарга алып келет. Бул кененирээк сүрөттөлгөн бул жерде.

Окуу курсу - өтө төмөн конвергенциянын жай болушуна же локалдык минимумдарда тыгылып калуу коркунучуна алып келет. Ошол эле учурда, жогорку окуу курсу оптималдаштыруу дивергенциясына алып келет, анткени сиз жоготуу функциясынын терең, бирок тар бөлүгүнөн секирип кетүү коркунучу бар. Нейрондук тармакты үйрөтүүдө ылдамдыкты азайтуу үчүн графикти колдонуп көрүңүз. CS231n менен заманбап бул маселеге арналган чоң бөлүм бар.

Градиентти кесүү  — максималдуу мааниде же чектик нормада артка таралуу учурунда параметр градиенттерин кыркып алуу. Үчүнчү пунктта кезигиши мүмкүн болгон жарылуучу градиенттерди оңдоо үчүн пайдалуу.

Пакетти нормалдаштыруу - ар бир катмардын кириш маалыматтарын нормалдаштыруу үчүн колдонулат, бул бизге ички ковариаттын жылышынын маселесин чечүүгө мүмкүндүк берет. Эгер сиз Dropout жана Batch Norma менен бирге колдонуп жатсаңыз, бул макаланы карап чыгыңыз.

Стохастикалык градиенттин түшүүсү (SGD) — импульсту, адаптивдик окутуу темптерин жана Нестеров ыкмасын колдонгон SGDдин бир нече сорттору бар. Бирок, алардын эч кимиси окуунун натыйжалуулугу жана жалпылоосу жагынан ачык-айкын артыкчылыкка ээ эмес (чоо-жайы бул жерде).

Регуляризация - жалпылануучу моделди түзүү үчүн өтө маанилүү, анткени ал моделдин татаалдыгы же өтө чоң параметр маанилери үчүн жазаны кошот. Бул моделдин дисперсиясын бир кыйла жогорулатпастан азайтуунун жолу. Дагы толук маалымат - бул жерде.

Баарын өзүңүз баалоо үчүн, регуляризацияны өчүрүп, маалымат жоготуу градиентин өзүңүз текшеришиңиз керек.

Чыгуу тыгындын алдын алуу үчүн тармагыңызды тартипке келтирүүнүн дагы бир ыкмасы. Тренинг учурунда окууну таштоо нейрондун активдүүлүгүн белгилүү p ыктымалдыгы (гиперпараметр) менен сактоо же карама-каршы учурда нөлгө коюу аркылуу гана ишке ашырылат. Натыйжада, тармак ар бир окуу партиясы үчүн башка параметрлердин топтомун колдонушу керек, бул үстөмдүк кылуучу айрым параметрлердеги өзгөрүүлөрдү азайтат.

Маанилүү иш: Эгер сиз таштап кетүүнү да, партияны нормалдаштырууну да колдонсоңуз, бул операциялардын тартибине этият болуңуз же аларды чогуу колдонуңуз. Мына ушунун бардыгы азыр да кызуу талкууланып, толукталып жатат. Бул жерде бул тема боюнча эки маанилүү талкуу болуп саналат Stackoverflow боюнча и архив.

Ишти көзөмөлдөө

Бул иш процесстерин жана эксперименттерди документтештирүү жөнүндө. Эгер сиз эч нерсени документтештирбесеңиз, мисалы, кандай окуу ылдамдыгы же класстык салмактар ​​колдонулганын унутуп коюшуңуз мүмкүн. Көзөмөлдүн аркасында мурунку эксперименттерди оңой көрүп, кайра чыгара аласыз. Бул кайталанма эксперименттердин санын кыскартууга мүмкүндүк берет.

Бирок, кол менен документтештирүү жумуштун чоң көлөмүндө кыйын иш болуп калышы мүмкүн. Дал ушул жерде Comet.ml сыяктуу куралдар автоматтык түрдө берилиштер топтомун, кодду өзгөртүүнү, эксперименталдык тарыхты жана өндүрүш моделдерин, анын ичинде моделиңиз тууралуу негизги маалыматты (гиперпараметрлер, моделдин иштешинин көрсөткүчтөрү жана экологиялык маалымат) журналга киргизүүгө жардам берет.

Нейрондук тармак кичинекей өзгөрүүлөргө өтө сезгич болушу мүмкүн жана бул моделдин иштешинин төмөндөшүнө алып келет. Ишиңизге көз салуу жана документтештирүү чөйрөңүздү жана моделдөөңүздү стандартташтыруу үчүн жасай турган биринчи кадам болуп саналат.

Нейрондук тармактар ​​менен иштөө: мүчүлүштүктөрдү оңдоо үчүн текшерүү тизмеси

Бул пост сиздин нейрон тармагыңызды оңдоону баштоо үчүн баштапкы чекит болот деп үмүттөнөм.

Skillbox сунуштайт:

Source: www.habr.com

Комментарий кошуу