Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Въведение в (Machine|Deep) Learning

Въведение в (Machine|Deep) Learning

Stefan Kanev

May 19, 2023
Tweet

More Decks by Stefan Kanev

Other Decks in Programming

Transcript

  1. Introduction to (Machine|Deep) Learning
    Стефан Кънев
    http://skanev.com/
    @skanev
    PlovdivConf
    13 май 2023
    Пловдив

    View full-size slide

  2. Здравейте, аз съм Стефан

    View full-size slide

  3. skanev.com
    @skanev
    /c/StefanKanev
    tilde-slash.fm

    View full-size slide

  4. ChatGPT, ??.??.2023

    View full-size slide

  5. (machine|deep) learning

    View full-size slide

  6. интуиция за какво е невронна мрежа
    1
    2
    3
    да се зарибите да пробвате
    ясни следващи стъпки
    Цели за днес

    View full-size slide

  7. disclaimer(s)!

    View full-size slide

  8. малко hand-waving


    ще “поопростя” някои неща


    ще говоря само за supervised learning


    ще пропусна ред интересни моменти


    все пак, ще съм фактологически коректен

    View full-size slide

  9. уви, има доста математика

    линейна алгебра

    “calculus”

    статистика

    изненадващо, не ви трябва да започнете, но
    помага

    View full-size slide

  10. някои автори сравняват невронните мрежи
    с човешкия мозък, но аз не харесвам това

    безполезна аналогия

    никой не знае още как работи човешкия
    мозък



    по-скоро е вдъхновено от това, но се разбира
    по-добре през математическия модел

    View full-size slide

  11. machine learning vs deep learning

    View full-size slide

  12. какво е machine learning?

    View full-size slide

  13. алгоритми

    View full-size slide

  14. y = f(x)
    знаем
    търсим
    знаем

    View full-size slide

  15. f x y
    най-голямо число / max a, b a > b ? a : b
    сортиране на масив списък от неща подредени неща
    Д[еиа]йкстра граф най-кратък път
    Алгоритми

    View full-size slide

  16. Machine Learning

    View full-size slide

  17. y = f(x)
    знаем
    знаем
    търсим

    View full-size slide

  18. m² етаж квартал цена
    70 5 Люлин 80,000
    90 1 Лозенец 112,000
    60 10 Център 140,000
    120 10 Център 200,000
    x y
    пример
    features labels

    View full-size slide

  19. m² етаж квартал цена
    70 5 Люлин 80,000
    90 1 Лозенец 112,000
    60 10 Център 140,000
    120 10 Център 200,000
    X y⃗

    View full-size slide

  20. добре, но как точно търсим f?

    View full-size slide

  21. правим “предположение” за формата на f



    дефинираме “грешка”



    търсим параметри за които грешката е
    минимална



    (на практика ползваме готова
    библиотека, не го правим ръчно)

    View full-size slide

  22. линейна регресия

    View full-size slide

  23. правим “предположение” за формата на f



    дефинираме “грешка”



    търсим параметри за които грешката е
    минимална



    (на практика ползваме готова
    библиотека, не го правим ръчно)

    View full-size slide

  24. f = a0 + a1x1 + a2x2 + a3x3 + … + anxn = y
    features label
    parameters / weights
    квадратура
    етаж квартал цена

    View full-size slide

  25. the curse of dimensionality

    View full-size slide

  26. квадратура
    цена
    f = a0 + a1x1 = y

    View full-size slide

  27. квадратура
    цена

    View full-size slide

  28. правим “предположение” за формата на f



    дефинираме “грешка”



    търсим параметри за които грешката е
    минимална



    (на практика ползваме готова
    библиотека, не го правим ръчно)

    View full-size slide

  29. y = f(x)
    ̂
    ̂

    View full-size slide

  30. правим “предположение” за формата на f



    дефинираме “грешка”



    търсим параметри за които грешката е
    минимална



    (на практика ползваме готова
    библиотека, не го правим ръчно)

    View full-size slide

  31. a0
    грешка

    View full-size slide

  32. gradient descent

    View full-size slide

  33. целия този процес се нарича
    “трениране”

    View full-size slide

  34. x₁
    x₂
    x₃
    x₄
    x₅
    +
    y
    f = a0 + a1x1 + a2x2 + a3x3 + … + anxn = y

    View full-size slide

  35. как изглеждат тези параметри?

    View full-size slide

  36. y = база + ценакв×кв
    y = 10,000 + 1,000×кв

    View full-size slide

  37. какво правим с етажа?

    View full-size slide

  38. y = база + ценакв×кв + ценаетаж×етаж
    y = 10,000 + 1,000×кв + 2,000×етаж

    View full-size slide

  39. как може да решим този проблем?

    View full-size slide

  40. етаж
    първи
    високо
    ниско

    View full-size slide

  41. етаж
    2
    1
    10
    5
    първи нисък висок
    0 1 0
    1 0 0
    0 0 1
    0 0 0
    one-hot-encoding + binning (of sorts)

    View full-size slide

  42. y = база + €кв×кв + €първи×първи + €нисък×нисък + €висок×висок
    y = 10,000 + 1,000×кв + -5,000×първи + -2,000×нисък + 10,000×висок

    View full-size slide

  43. какво правим с квартала?

    View full-size slide

  44. квартал
    Лозенец
    Люлин
    Център
    Лозенец
    квартал
    1
    2
    3
    1
    indexing няма да работи

    View full-size slide

  45. квартал
    Лозенец
    Люлин
    Център
    Лозенец
    лозенец център люлин
    1 0 0
    0 0 1
    0 1 0
    1 0 0
    one-hot-encoding (ама наистина)

    View full-size slide

  46. y = база + €кв×кв + €лоз×лоз + €люл×люл + €цен×цен
    y = 10,000 + 1,000×кв + 10,000×лоз + -5,000×люл + 30,000×цен

    View full-size slide

  47. това ще даде по-добри резултати, но
    навярно не съвпада с реалността

    View full-size slide

  48. по-скоро различните квартали имат
    различна базова цена на квадрат

    View full-size slide

  49. квартал кв²
    Лозенец 70
    Люлин 120
    Център 60
    Лозенец 85
    лозенец × кв² център × кв² люлин × кв²
    70 0 0
    0 0 120
    0 60 0
    85 0 0
    one-hot-encoding (ама наистина)

    View full-size slide

  50. y = база + €кв×кв + €лоз×кв×лоз×кв + €люл×кв×люл×кв + €цен×кв×цен×кв
    y = 10,000 + 1,000×кв + 200×лоз×кв + -100×люл×кв + 500×цен×кв

    View full-size slide

  51. всичко това се нарича feature
    engineering и е голяма част от процеса
    на (класически) machine learning


    също така е част от data science заяната
    (образно казано)

    View full-size slide

  52. regression vs. classi
    fi
    cation
    “реално” число булева стойност

    View full-size slide

  53. може да адаптираме линейната
    регресия до алгоритъм за
    класификация

    View full-size slide

  54. f =
    𝜎
    (a0 + a1x1 + a2x2 + a3x3 + … + anxn) = y
    f = a0 + a1x1 + a2x2 + a3x3 + … + anxn = y

    View full-size slide

  55. x₁
    x₂
    x₃
    x₄
    x₅
    σ y
    f =
    𝜎
    (a0 + a1x1 + a2x2 + a3x3 + … + anxn) = y

    View full-size slide

  56. объркващо, това се нарича логистична
    регресия (въпреки, че е класификация)

    View full-size slide

  57. супер. имаме модел. как знаем дали се
    справя добре?

    View full-size slide

  58. какво значи “справя добре”?



    прави хубави предвиждания за
    непознати данни

    ако го натренираме на всички данни,
    има шанс да научи само тях добре, но
    да генерализира зле

    View full-size slide

  59. train/test split
    All Data
    Train Test
    с това тренираме с това валидираме

    View full-size slide

  60. train test интерпретация
    60% 60% under
    fi
    t
    99% 65% over
    fi
    t
    95% 94% супер*
    validation

    View full-size slide

  61. deep learning


    (a.k.a. какво е невронна мрежа)

    View full-size slide

  62. x₁
    x₂
    x₃
    x₄
    x₅
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ y

    View full-size slide

  63. x₁
    x₂
    x₃
    x₄
    x₅
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ y
    layers
    neuron

    View full-size slide

  64. ползваме много слоеве


    всеки слой може да има различен размер от
    съседите си


    обикновено вместо сигмоид ползваме набор от
    други “активационни функции”


    gradient descent си работи, но обновяваме теглата на
    всички слоеве на всяка стъпка (backpropagation)


    има вариации на типовете слоеве

    View full-size slide

  65. дълбоки мрежи могат да сложни функции


    започва да трябва много желязо


    започваме да ставаме жертви на
    fl
    oating point


    започва много да over
    fi
    t-ва


    започва да е гладно за много данни, понеже това
    помага с over
    fi
    t-а

    View full-size slide

  66. convolutional neural networks

    View full-size slide

  67. друг вид слой, в който вместо
    “логистична регресия” правим
    конволюция

    View full-size slide

  68. защо това е интересно?

    View full-size slide

  69. при много данни, по-сложни модели
    могат да дадат по-добър резултат

    View full-size slide

  70. “намалява/премахва” feature engineering

    View full-size slide

  71. има по-интересна визуализация при
    мрежи за картинки

    View full-size slide

  72. интересното, е че не “програмираме”
    мрежата да разпознава ръбове, преходи и
    кучета, а тя сама се научава

    View full-size slide

  73. transfer learning

    View full-size slide

  74. можем да вземем мрежа натренирана за
    друг (подобен) проблем на много данни



    и да я
    fi
    ne-tune-нем за нашия проблем с
    много по-малко данни

    View full-size slide

  75. x₁
    x₂
    x₃
    x₄
    x₅
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ
    σ y

    View full-size slide

  76. numpy


    pandas


    matplotlib


    jupyter


    scikit-learn


    ternsor
    fl
    ow


    pytorch

    View full-size slide

  77. deeplearning.ai

    View full-size slide

  78. книжки на o’reilly

    View full-size slide

  79. kaggle.com


    huggingface.com

    View full-size slide