Building a neural network FROM SCRATCH (no Tensorflow/Pytorch, just numpy & math)

Поделиться
HTML-код
  • Опубликовано: 10 янв 2025

Комментарии • 1,4 тыс.

  • @khoa4k266
    @khoa4k266 Год назад +716

    I watched this video when I was studying in grade 11. Had no clue what he was talking about but I tried to understand as much as possible.
    Now I watch it again as a university student, it is so satisfying to understand everything now.

    • @viCuber
      @viCuber 11 месяцев назад +28

      Hope that will happen to me to

    • @CR33D404
      @CR33D404 11 месяцев назад +4

      @@viCuber same LOL

    • @viCuber
      @viCuber 11 месяцев назад +2

      @@CR33D404 lmao

    • @codevacaphe3763
      @codevacaphe3763 10 месяцев назад +12

      It happens to me several time. Sometime you just stumble on a knowledge and can't understand a single thing about it then suddenly 1 or 2 years later you completely understand it without any try.

    • @nachoyawn
      @nachoyawn 10 месяцев назад +1

      same

  • @victorafonso4534
    @victorafonso4534 2 года назад +7127

    Making a neural network from scratch is easy, what I really want to see is how to make a neural network ON scratch.

    • @d3vitron779
      @d3vitron779 2 года назад +709

      Make the scratch cat sentient challenge (gone wrong) (humanity destroyed)

    • @theRPGmaster
      @theRPGmaster 2 года назад +208

      Just create a python interpreter in Scratch, easy

    • @Despatra
      @Despatra 2 года назад +18

      Ok

    • @v037_
      @v037_ 2 года назад +49

      Lmao, understimated comment, but perfect one

    • @BurNJoE
      @BurNJoE Год назад +3

      lol

  • @hcmcnae
    @hcmcnae Год назад +158

    I'm so glad you actually went in depth with the math explanation. So often people will just explain surface layer and then "alright lets jump into the code".

    • @Ayush-sz8ys
      @Ayush-sz8ys 6 месяцев назад +11

      dude, he literally did the same when he explained backpropagation and labelled it as "fancy maths" instead of properly explaining it.

    • @warpdrive9229
      @warpdrive9229 4 месяца назад

      @@Ayush-sz8ys Exactly! He should have derived it through matrix calculus.

  • @jumpierwolf
    @jumpierwolf 2 года назад +433

    Took a Machine Learning course in university and this is what we did the whole semester in Matlab. Tensorflow was introduced right at the end for the final project.

    • @gasun1274
      @gasun1274 2 года назад +14

      sounds amazing

    • @marshmellominiapple
      @marshmellominiapple Год назад +15

      oh hell yea matlab

    • @FictionHubZA
      @FictionHubZA Год назад +47

      ​@@marshmellominiapple oh he'll yeah methlab

    • @dumbfate
      @dumbfate Год назад +26

      @@FictionHubZA LET HIM COOK

    • @PluetoeInc.
      @PluetoeInc. 9 месяцев назад

      @@dumbfate no you let him cook

  • @you_just
    @you_just 2 года назад +3666

    i like how numpy has become so ingrained in python that it's basically considered vanilla python at this point

    • @nathanwycoff4627
      @nathanwycoff4627 2 года назад +91

      interestingly much of that functionality is built into other languages used by the ml community such as R, matlab and julia.

    • @mattrochford6783
      @mattrochford6783 2 года назад +81

      @@nathanwycoff4627 matrices and linear algebra are really useful for math and engineering less so for general programming. Different languages focusing on different usability concerns quite interesting.

    • @machineman8920
      @machineman8920 2 года назад +11

      @@mattrochford6783 stop coping julia is just a better language

    • @HilbertXVI
      @HilbertXVI 2 года назад +72

      @@machineman8920 ???

    • @thebluriam
      @thebluriam 2 года назад +163

      I don't like it. I wish people stopped being overly-lazy with Numpy and just wrote their own libraries so they'd understand what they are actually doing. No, scratch that, if they can't accomplish the same thing using only Assembly, they're a total noob, should put down their keyboard, and get an MBA instead...

  • @MegaJesusini
    @MegaJesusini 2 года назад +105

    My man really explained how a back propagated neural network works from scratch in 10 minutes

  • @uncoded0
    @uncoded0 3 года назад +826

    This video is one of the best descriptions of neural networks written in only Numpy and Python I've ever seen.
    Thanks

    • @anishojha1020
      @anishojha1020 3 года назад +3

      Hey guys, a reply would be highly appreciated. I want to plot the cost vs the number of iterations but I am not able to figure which parameter to plot ? I am a beginner and I would really appreciate the help. Thank you

    • @uncoded0
      @uncoded0 3 года назад +6

      @@anishojha1020 Hi, try posting comment again in regular comments part, so more people see it. This is only a sub-comment.

    • @waterspray5743
      @waterspray5743 3 года назад

      @@KHM95 Hi, are you a bot?

    • @KHM95
      @KHM95 3 года назад +1

      @@waterspray5743 No man, I am not.

    • @ME0WMERE
      @ME0WMERE 2 года назад +1

      I advise looking at sendex's 'Neural Network from scratch' series

  • @albertolemosduran5685
    @albertolemosduran5685 2 года назад +33

    Most of the videos are titled “how to create a blabla” when they’re actually teaching how to use… so I really appreciate your video! This really contributes to knowledge 🥰

  • @traviss7740
    @traviss7740 2 года назад +78

    I've never heard any of this explained before. After watching this once, I understand the mathematics behind neural networks and why the functions are used. Great job with the explanation here. Many thanks.

  • @jasonavina8135
    @jasonavina8135 2 года назад +33

    In case any beginners to ML came here wondering why they are really confused, this video isn't really for beginners and he doesn't really explain that. Its "from scratch" in the sense of not using any prebuilt models in the code. Its a good explanation for people who are already familiar with neural networks, prebuilt layers, loss functions, etc. not for people starting their understanding "from scratch."

    • @OT-tn7ci
      @OT-tn7ci 2 года назад +6

      actually im new to ML, (2-3 months in) and this helped me understand a lot, i am implementing it on my own now, without even using numpy so i can code out stuff like transpose on my own and learn more. Random is tricky tho lol

    • @BatPoopBatPoopBatPoop
      @BatPoopBatPoopBatPoop 2 месяца назад

      @@OT-tn7ciyes but he doesn’t explain the math or why it works. It’s meant for people that already know why the math works, and who want to know how to put it all together

  • @notyou4122
    @notyou4122 2 года назад +25

    Musician, filmmaker, data scientist, and etc. bro maxed out on skill trees. 😂

  • @LydellAaron
    @LydellAaron 2 года назад +22

    Just your intro alone in your motivations was so capturing. You laid out everything so clearly, including creating those row and column matrices in the early steps. Thank you.

  • @luis-bq
    @luis-bq Год назад +44

    This is pure gold, MSc in Data Science and Artificial Intelligence, no professor ever gave me the answer to "what is the code inside the libraries we use", until I found you. Thank you

    • @rushisy
      @rushisy Год назад +15

      thats sad

    • @stanislavlia
      @stanislavlia Год назад

      I don't want to sound too catchy and annoying but the NN's in Tensorflow and PyTorch are not actually implemented like this. They don't store functions to compute gradients for every single option rather they use AutoGradient which does all backpropogation job. I would highly recommend to watch Andrej Karpathy's tutorial on micrograd (mini AutoGradient which you will implement)

    • @michaelpieters1844
      @michaelpieters1844 10 месяцев назад +6

      I got a master in physics and statistics but I do know how to code a lot of "machine learning" techniques from scratch. Yet human resources look at my degree and think I am incapable, so they rather hire master in AI. I can also code CFD, SPH and FEA from scratch but HR say I am dumber than engineer who just uses third party software (ansys).

    • @suscactus420
      @suscactus420 9 месяцев назад

      @@michaelpieters1844 welcome to recruitment in 2024... you need to feed the recruiters what they want to hear, so that you can then get to the guy who you actually want to talk to about your stuff.

    • @Iqbal00123
      @Iqbal00123 6 месяцев назад

      @@michaelpieters1844 You are dumb compared to a ML engineer.Masters in Physics is far too easy

  • @TimeRoot
    @TimeRoot 2 года назад +791

    00:51 Problem statement
    01:18 Math explanation
    11:18 Coding it up
    27:43 Result's

  • @alperengul8654
    @alperengul8654 3 года назад +2352

    If you make more deep learning videos with numpy and math(without any framework) just like in this video, it would be great for begginers to learn basics!!! Do you think to keep continue??

    • @cemsalta
      @cemsalta 3 года назад +12

      Merhaba Eren!

    • @kanui3618
      @kanui3618 3 года назад +1

      upp!

    • @anishojha1020
      @anishojha1020 3 года назад +3

      Hey guys, a reply would be highly appreciated. I want to plot the cost vs the number of iterations but I am not able to figure which parameter to plot ? I am a beginner and I would really appreciate the help. Thank you

    • @KHM95
      @KHM95 3 года назад

      Here's a course you'll need.
      Face Mask Detection Using Deep Learning and Neural Networks. It's paid but it's worth it.
      khadymschool.thinkific.com/courses/data-science-hands-on-covid-19-face-mask-detection-cnn-open-cv

    • @w花b
      @w花b 2 года назад +16

      @@anishojha1020 you're probably not a beginner anymore so I hope you found your answer! Unfortunately, youtube comment section isn't a forum and a lot of people disable notifications(including me) so an actual forum although people are sometimes really rude and condescending, is your best bet for future questions.

  • @llewsub
    @llewsub Год назад +8

    Most tutorials I watch online about ML, you can just tell that the instructor doens't know whats happening. They've just memorized libraries and tensorflow syntax, and I don't want that to be me! This is exactly what i've been looking for! THANK YOU!!!

  • @omlachake2551
    @omlachake2551 3 года назад +113

    this type of learning is honestly the best, i implemented k means clustering by myself in c (pretty easy stuff but still) , and i can never forget it now, makes me happy that i can do stuff too

    • @Emily-fm7pt
      @Emily-fm7pt 2 года назад +21

      When I was in high-school algebra I programmed an algebra calculator to do my homework for me, and for some reason I never actually needed it. Programming something really is a great way of learning it, even if it does take significantly longer than just some p-sets or flashcards.

    • @OT-tn7ci
      @OT-tn7ci 2 года назад +1

      @@Emily-fm7pt dude are you serious ??? SAME SAME lmao

    • @auronusben4567
      @auronusben4567 Год назад +6

      I remember when I tried to implement a decision tree on paper !! With a very small data dimensions (maybe 5x6 dim? Can't remember). I spent all the night doing the math but after 5-6 hours I realized I made a mistake in an iteration 😂😂 that's when I realized that we're lucky to have computers to help do it because a human mind can't build completely without doing mistakes in the process (can't stay focus for long time)...
      I also remember when I implemented a PCA from scratch on excel ( still have the Excel 😂)...😮

  • @solleo9
    @solleo9 2 года назад +11

    What an impressive speed run! Just nitpicking: 15:45 `rand` is for a uniform dist U(0,1) and `randn` is for the standard normal distribution N(0,1), therefore unbounded, not U(-0.5, 0.5)

  • @mdgsteeplejack4711
    @mdgsteeplejack4711 4 месяца назад +3

    I am so glad, that whenever some teacher just skips the tricky part, a friendly+capable asian guy jumps out of nowhere to casually explain higher math in depth to you.

  • @David-ip2sd
    @David-ip2sd Год назад +60

    Hi! I did a recreation of your code with more hidden layers and noticed what I think is a bug in the db calculation. Changing it to db = 1 / m * np.sum(dZ, axis=1).reshape(-1, 1) was able to get me better results. I think the old db = 1 / m * np.sum(dZ) sums the entire dZ to one float. Very good video though!

    • @Hyngvi
      @Hyngvi Год назад +1

      noticed the same thing. The way it was implemented here returns db to a float and thus b will always be "similar" to the random initialization, only shifted up/down by a constant.

    • @matthewjouffray
      @matthewjouffray Год назад

      Hey, I know you posted this a while ago, but I noticed the same thing and saw your comment. I am still not sure how to solve this, dZ is still a 1D array (1 by 10) so in your solution, what does axis=1 do? won't .sum*() just turn the 1D array into a scalar regardless, and then you are back with the same problem of updating all your biases the same way?

    • @matthewjouffray
      @matthewjouffray Год назад

      Actually, nevermind, dZ is 10 by m so this does make sense

    • @gpeschke
      @gpeschke Год назад +2

      Numpy requires some strange things when you have only 1 dimension:
      Verfied that without this change the final biases weights aren't being updated.
      With it, training works better. Didn't verify the details of David's solution, just that it was needed, and that it seemed to work.
      def backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y):
      one_hot_Y = one_hot(Y)
      dZ2 = A2 - one_hot_Y
      dW2 = 1 / m * dZ2.dot(A1.T)
      db2 = 1 / m * np.sum(dZ2, axis=1).reshape(-1, 1)
      dZ1 = W2.T.dot(dZ2) * ReLU_deriv(Z1)
      dW1 = 1 / m * dZ1.dot(X.T)
      db1 = 1 / m * np.sum(dZ1, axis=1).reshape(-1, 1)
      return dW1, db1, dW2, db2

    • @danielmyers76
      @danielmyers76 8 месяцев назад

      I see the same. Also, either this is old enough that something has changed in Python or numpy, or he hasn’t included other things as well. Using his code line for line and the same data set, I get a divide by zero error on the softmax function.

  • @numberiforgot
    @numberiforgot 2 года назад +4

    I love it when I learn more from a YT video than my computer science courses.

  • @randyscorner9434
    @randyscorner9434 10 месяцев назад +1

    Excellent tutorial and example. Reveals the magic that most don't know about NNs and I love how you go about it.

  • @sharmakartikeya
    @sharmakartikeya 3 года назад +21

    Bro, that is exactly how I study! I found out your channel and I am so glad I did. Instantly subscribed!
    I see you have learnt from Andrew Ng

    • @rishikeshkanabar4650
      @rishikeshkanabar4650 3 года назад +2

      yeah the notations reminded me of Andrew Ng

    • @kumaranp8764
      @kumaranp8764 3 года назад +4

      @@rishikeshkanabar4650 usage of the word called "intuition" reminds me of him saying ..."to get a better intuition" in his lectures

  • @ItsNaberius
    @ItsNaberius 9 месяцев назад

    Really excellent breakdown of a Neural Network, especially the math explanation in the beginning. I also want to say how much I appreciate you leaving in your first attempt at coding it and the mistakes you made. Coding is hard, and spending an hour debugging your code just because of one little number is so real. Great video

  • @CristianMorales-zo1jb
    @CristianMorales-zo1jb Год назад +4

    Subscribed at 0:05 seconds because you look smart AF kid. Thanks for teaching.

    • @AvinashKJ
      @AvinashKJ 4 месяца назад

      Smart 😂😂

  • @edisonbekaj863
    @edisonbekaj863 2 года назад

    Samson Zhang is the BEST Cinematographer, editor, musician& tech geek in the WORLD

  • @Hex...
    @Hex... Год назад +23

    This was interesting, it certainly made neural networks far more approachable to me as someone who's never needed to/been inclined to try making one, but encounters them frequently by being involved in STEM. Your explanations coupled with my familiarity with numpy as opposed to dedicated libraries for neural networks really helped - thanks!

  • @GrahamEckel
    @GrahamEckel 2 года назад +4

    Better lecture and example for understanding and building NN than any in my math and stats MSc

  • @blackswann9555
    @blackswann9555 Месяц назад

    Trying this tonight after watching the tutorial, the Kaggle book is still live. Very pro! Thanks Samson!

  • @JustKevStockholm
    @JustKevStockholm Год назад +30

    Hi Samson! I'm a developer and trying to learn the basics of ML. Much of the beginner stuff I see is using pre-trained models and frameworks which might be convenient to get things going. However, for me this is something completely new and I really what to understand what happens behind the scenes. Thank you for posting this! /Kevin from Sweden

    • @paultvshow
      @paultvshow 11 месяцев назад +1

      ⁠Exactly!

    • @carnap355
      @carnap355 11 месяцев назад

      try jeremy howard part2 of 2022 courses

  • @hassaannoor
    @hassaannoor 3 года назад +2

    Thanks so much for providing the notebook. I tested with different learning rates and lo and behold, 0.50 gives 91% accuracy on test data. And by setting the number of neurons in the deep layer to 20. The accuracy of 93% was achieved.

    • @nithinsai2250
      @nithinsai2250 3 года назад +1

      try changing the epoch too

    • @hassaannoor
      @hassaannoor 3 года назад

      @@nithinsai2250 Yeah I tried 1000, it did improve it. But I wanted to benchmark the inference against the same epochs.

    • @KHM95
      @KHM95 3 года назад

      Here's a course you'll need.
      Face Mask Detection Using Deep Learning and Neural Networks. It's paid but it's worth it.
      khadymschool.thinkific.com/courses/data-science-hands-on-covid-19-face-mask-detection-cnn-open-cv

  • @Mutual_Information
    @Mutual_Information 2 года назад +9

    Just discovered this channel. Very cool stuff. Much respect for doing something challenging like this.

  • @arksodyssey
    @arksodyssey 11 месяцев назад +1

    This solved a lot of doubts and brought up mu confidence levels to deep dive into AI/ML. Thanks for the explanation.

  • @Bobbleheads56
    @Bobbleheads56 2 года назад +5

    I need to come back to this after learning some more preliminaries but you are a very natural teacher and good at presenting. Keep it up 👍

  • @letticonionepic
    @letticonionepic Год назад

    I know the Maths and Programming behind it and listening this guy doing all that on his own is pure respect from my side.

  • @anandptyagi5275
    @anandptyagi5275 2 года назад +2

    After Andrew Ng's course, this is the first time I'm watching math functions, thanks buddy, it was a nice refresher for me.

  • @DungeonMasterpiece
    @DungeonMasterpiece 2 года назад +2

    I've been looking for this video for 6 years.

  • @mauricioledon4498
    @mauricioledon4498 2 года назад +4

    You sir, are my hero. You are the first person to actually explain this properly to me. Thank you so much for that.

  • @iwasdeleted708
    @iwasdeleted708 Год назад +2

    the fact he actually shows the first overconfident of its memory programer stage is actually so real.

  • @minjunkevink
    @minjunkevink 2 года назад +3

    Amazing. Needed to see the low end and finally found it. Thank you for the amazing video!

  • @KSATica
    @KSATica Год назад +23

    You should continue making video similar to this maybe something a training course for machine learning and reinforcement learning AI. You have a real talent for explaining it in the best way possible then from what most videos I’d watched. 👍

  • @momol.9892
    @momol.9892 8 месяцев назад

    Just learned basics around the neural networks and saw this video. So satisfied to all the math formulas are laid out clearly in numpy and real-world coding and training neural network with back propagation. It really helps beginners like me. Thank you so much!

  • @robertknopf6207
    @robertknopf6207 3 года назад +20

    Another thing that would be helpful for those of us that want to copy what you did and experiment with it is to have all the code together instead of separated as it is using Kaggle - this way you can put in some comments with the code explaining the different features. Again, very good video.

  • @hocm2
    @hocm2 8 месяцев назад

    Maaan, I am so happy you made this video. I was looking for somebody to train the Neural Network from scratch. I will go through it several times to get into the subject. Your English is excellent! Many, many thanks!

  • @123arskas
    @123arskas 2 года назад +4

    Just 1 minute in the video and I can easily tell that you're gonna own a multi-billion company within a few years. You've got the IQ, the voice, the clarity, the confidence, and the right personality. Best of luck Mr. Zhang

  • @peterweicker77
    @peterweicker77 Год назад

    This is great. Built a backprop in C thirty years ago to solve the same problem. Just for a goof. It worked well before I finished debugging.
    These things are awesome and now I want to take another look. Thanks for posting this.

  • @darrellrayford3817
    @darrellrayford3817 2 года назад +19

    This was a really good video. I’ve never build a neural network but it was interesting seeing how the fundamentals add up to build something a little more complexed.

  • @jamescardenas837
    @jamescardenas837 9 месяцев назад

    i have no idea what your were really saying but at the same time i do because you explained how the math is used and implemented for the code. thank you !

  • @Crayphor
    @Crayphor 2 года назад +11

    It's worth noting that softmax IS actually very similar to sigmoid. But it essentially does a sigmoid over multiple classes.

  • @blueblackcloud
    @blueblackcloud 7 месяцев назад

    you got a face of child but wisdom and heart of a man! Love the video

  • @lbb2rfarangkiinok
    @lbb2rfarangkiinok 2 года назад +4

    This was really neat. The math explanation was frustrating the first time around but really made sense after working through the code. Thanks for sharing.

  • @gnorts_mr_alien
    @gnorts_mr_alien 2 года назад +1

    This is the first ASMR NN video that I have ever seen. Well done.

  • @juliocardoza6066
    @juliocardoza6066 2 года назад +5

    Samson, Keep doing this kind of videos please!! Very intelligent and understandable video

  • @leonhardlischka221
    @leonhardlischka221 7 месяцев назад

    I had many Machine Learning seminars in University and saw a lot of videos online on this topic. This is definitelly one of the best i ever saw. All relevant information in such short time, explained with such a high didactic quality. Wish i've had such docents at University. You should go teaching in MIT.

  • @RonClabo
    @RonClabo 3 года назад +12

    What an awesome video! Thank you for sharing this insightful walkthrough, it was really helpful in getting a better understanding of how neural nets works. Thank you!

    • @KHM95
      @KHM95 3 года назад

      Here's a course you'll need.
      Face Mask Detection Using Deep Learning and Neural Networks. It's paid but it's worth it.
      khadymschool.thinkific.com/courses/data-science-hands-on-covid-19-face-mask-detection-cnn-open-cv

  • @FloraEncantiks
    @FloraEncantiks Месяц назад

    Amaaazing, I love how calmly and clearly you explain. Thank you!!

  • @FreakyStyleytobby
    @FreakyStyleytobby 2 года назад +10

    Man this video is a masterpiece. I learned a lot and I love your thorough, calm style. Please keep doing similar content!! Best wishes

  • @bjornnorenjobb
    @bjornnorenjobb 3 года назад +1

    this video deserves at least 1 million views

  • @FireNLightnin
    @FireNLightnin 2 года назад +9

    Great video! I did the same thing in python about a year ago, but I didn’t like relying on numpy so much. Your video gave me the motivation to write both a matrix manipulator and neural network from scratch in Java

    • @TheJackTheLion
      @TheJackTheLion Год назад +3

      I did it in assembly, easy

    • @greggoog7559
      @greggoog7559 17 дней назад +1

      I did it in plain Javascript today -- yes, using numpy is not really "from scratch"...

  • @andimuhammadryanto9295
    @andimuhammadryanto9295 Год назад

    bro, I am watching NN course from online platform for 1 months, but still difficult to get grasp on it. But you made me understand it in just 30 mins. many thanks

  • @dcrespin
    @dcrespin 2 года назад +5

    An excellent nice video with abundant mathematical insight.
    It may be worth to note that instead of partial derivatives one can work with derivatives as the linear transformations they really are, and also looking at the networks in a more structured manner thus making clear how the basic ideas of BPP apply to much more general cases. Several steps are involved.
    1.- More general processing units.
    Any continuously differentiable function of inputs and weights will do; these inputs and weights can belong, beyond Euclidean spaces, to any Hilbert space. Derivatives are linear transformations and the derivative of a neural processing unit is the direct sum of its partial derivatives with respect to the inputs and with respect to the weights; this is a linear transformation expressed as the sum of its restrictions to a pair of complementary subspaces.
    2.- More general layers (any number of units).
    Single unit layers can create a bottleneck that renders the whole network useless. Putting together several units in a unique layer is equivalent to taking their product (as functions, in the sense of set theory). The layers are functions of the of inputs and of the weights of the totality of the units. The derivative of a layer is then the product of the derivatives of the units; this is a product of linear transformations.
    3.- Networks with any number of layers.
    A network is the composition (as functions, and in the set theoretical sense) of its layers. By the chain rule the derivative of the network is the composition of the derivatives of the layers; this is a composition of linear transformations.
    4.- Quadratic error of a function.
    ...
    ---
    Since this comment is becoming too long I will stop here. The point is that a very general viewpoint clarifies many aspects of BPP.
    If you are interested in the full story and have some familiarity with Hilbert spaces please google for papers dealing with backpropagation in Hilbert spaces. A related article with matrix formulas for backpropagation on semilinear networks is also available.
    For a glimpse into a completely new deep learning algorithm which is orders of magnitude more efficient, controllable and faster than BPP search in this platform for a video about deep learning without backpropagation; in its description there are links to a demo software.
    The new algorithm is based on the following very general and powerful result (google it): Polyhedrons and perceptrons are functionally equivalent.
    For the elementary conceptual basis of NNs see the article Neural Network Formalism.
    Daniel Crespin

  • @waynesletcher7470
    @waynesletcher7470 Год назад

    Love your sense of humor! Brought the video to life, thanks! You are appreciated!

  • @jeandy4495
    @jeandy4495 2 года назад +6

    Super cool! Would also recommend the series from The Coding Train about creating a neural network from scratch, going a little more into the details of math and what is a perceptron and so.

  • @faris.abuali
    @faris.abuali 2 года назад +4

    Thank you so much Mr. Samson!!
    This was so informative and enlightening

  • @aureliencobb199
    @aureliencobb199 2 года назад

    Brilliant. Kind of the Hello World of neural nets. It shed a lot of light for me on how back propagation works.

  • @aaliyahiam4286
    @aaliyahiam4286 2 года назад +3

    this man appeared, released an absolute banger of a programming video, and proceeded to never posted any cs content again. sigma mentality tbh

  • @Scott_in_LA
    @Scott_in_LA 2 месяца назад

    VERY helpful! I could never understand the weightings when I watched (lots and lots) of other videos, but this did it for me - I get it now (as much as I am capable of!). Thanks again!!

  • @ricardo5875
    @ricardo5875 3 года назад +16

    This is a great way to teach ANN - congrats. However, I would like to suggest you to not worry too much about the time to finish the implementation. Double-checking all steps will avoid coding errors.

  • @carloscortes2391
    @carloscortes2391 Год назад

    I am going to do the same over the next two weeks , at the end I'm coming back to see any differences between our code, thanks for sharing :)

  • @AAAJ27
    @AAAJ27 2 года назад +4

    Samson, this was such a great walk through. Just wanted to say that if you ever made other videos recreating machine learning models from scratch, I'd 100% watch them. In any case, hope all is good and thanks for this great content :)

  • @kurtameyer
    @kurtameyer 11 месяцев назад

    Thank you. I'm doing this in class right now and your explanations were super helpful!

  • @SnackPack913
    @SnackPack913 Год назад +8

    I’m always too intimidated to try some of these things. But seeing your process makes it really seem feasible. Need to brush up on my linear algebra again tho 😆

  • @drgatsis
    @drgatsis Год назад +2

    Thanks for lovely video Samson. I'm a prof and love seeing this kind of content. I'll definitely share with students

  • @chessprogramming591
    @chessprogramming591 2 года назад +3

    Thank you for your time and effort, Samson, this tutorial is a treasure.

  • @aronpop1447
    @aronpop1447 2 года назад +1

    finally someone who actually respects the craft

  • @kamaldani1686
    @kamaldani1686 9 месяцев назад +19

    Understood nothing but wow

  • @joschkazimdars
    @joschkazimdars 3 года назад

    It feels like it took me months to understand programming feedforward neural networks but I finally understand it. Thanks for the video.

  • @f.osborn1579
    @f.osborn1579 2 года назад +7

    Haven’t finished video yet, but this looks like the missing piece of my experience learning about neural networks at a high level…I probably lacked the linear algebra skills I have now though. Whoa! This could be incredibly exciting! I can’t wait!

  • @ahmadmoghadam-y8o
    @ahmadmoghadam-y8o 6 месяцев назад

    the tutorial was amazing. I've been trying to find something like that for a while. it was amazing! thanks!

  • @tommyhuffman7499
    @tommyhuffman7499 2 года назад +6

    It's a shame it isn't taught this way in courses. Excellent video!

  • @luizarnoldchavezburgos3638
    @luizarnoldchavezburgos3638 2 года назад

    Keep doing it man, I am from Perú and the information that your are giving is the important I have heared about

  • @Kaetemi
    @Kaetemi Год назад +6

    Helpful, thanks. Made my own from scratch in bare C++. From image to 32 to 16 to 10 outputs, using leaky ReLU. 96% accuracy on the test set. 🥳

    • @tenengbright3160
      @tenengbright3160 4 месяца назад

      Wow nice

    • @greggoog7559
      @greggoog7559 17 дней назад

      Good stuff! I did it in plain Javascript yesterday 😃 man we're all a bit bored...

  • @Felix14325
    @Felix14325 Год назад

    Amazing video for beginners to gain an insight in how neural networks work. You just have to have programmed a simple neural net from scratch once to have a good basic understanding.

  • @mercedeszkistoth5367
    @mercedeszkistoth5367 2 года назад +14

    There is one thing I do not understand. Because the derivation and chain rule stuff, shouldn't the derivative of the softmax activation function also be included somewhere?

  • @sanglar3623
    @sanglar3623 2 года назад

    The yt algorithm only recommends me this now, 1 year after i've encountered a similar discontent with neural network tutorials. Still very interresting to see how someone else does it. I did give myself a bit of help by using a library called Eigen for the matrixes calculations.
    Very well done nice video

  • @isreallealbertsanchez1156
    @isreallealbertsanchez1156 3 года назад +31

    Timestaps if you forgot
    0:51 Problem Statement
    1:18 Math Explanation
    11:18 Coding It up
    27:43 Results

    • @KHM95
      @KHM95 3 года назад

      Here's a course you'll need.
      Face Mask Detection Using Deep Learning and Neural Networks. It's paid but it's worth it.
      khadymschool.thinkific.com/courses/data-science-hands-on-covid-19-face-mask-detection-cnn-open-cv

    • @Achrononmaster
      @Achrononmaster 2 года назад +1

      @18:07 is the time stamp where the other error was made, a2 = softmax(a1) which should be
      a2 = softmax(z2)

    • @Achrononmaster
      @Achrononmaster 2 года назад +1

      @23:30 you also see two errors, there is no axis argument for the np.sum(), the lines should be
      db2 = 1 / m * np.sum(dZ2) ... and ... db1 = 1 / m * np.sum(dZ1)

    • @Achrononmaster
      @Achrononmaster 2 года назад +1

      And @23:00 ReLU_deriv(z) should really be return np.array(zn > 0, dtype=float) if you are aiming for good typing practice.

    • @elivelive
      @elivelive 2 года назад

      I don't understand anything but wow

  • @katarzynaludwikakowalczyk-8232
    @katarzynaludwikakowalczyk-8232 10 месяцев назад

    Samson, thank you for this video, it is very helpful! Just like you, I also benefit much more from detailed, equation-based explanations than from the high level, big picture overviews.

  • @work9466
    @work9466 2 года назад +4

    I actually did this exact same thing for my German a level project. Same database. :D good times

  • @alexandrodisla6285
    @alexandrodisla6285 2 года назад +2

    Thank you. Keep it up!
    Math with code!
    Don’t stop! That spectrum is not represented enough.

  • @Milorae
    @Milorae 2 года назад +3

    Everyone praises this video for being so helpful and I'm just sitting here understanding NOTHING. :D I feel so dumb! Maybe I should've stared with something even more basic having learned in a nutshell only print("hello world") so far. I will definitely go back and watch it all again in the future after I learn more. Thank you for the video, Samson. Cheers!

    • @xianzai_ad1928
      @xianzai_ad1928 2 года назад +1

      defintely pick up a book on algorithims and data structures first!

  • @themoonlight1922
    @themoonlight1922 3 года назад +19

    Hi, i found this video very helpful for beginners. Could you please tell how you came up the equations of dz,dw and db? That would be really helpful as well

    • @aryamankukal1056
      @aryamankukal1056 2 года назад +2

      watch andrew ng he copied every single equation from his course

    • @eddieosafo1
      @eddieosafo1 2 года назад +2

      @@aryamankukal1056 I wouldn’t say he copied every equation. These equations are taught in all ML/AI courses and it is just mathematics

    • @aryamankukal1056
      @aryamankukal1056 2 года назад +1

      @@eddieosafo1 andrew's notation is a very specific and if u watch carefully he uses all of the same conventions

  • @mohamedgrich1368
    @mohamedgrich1368 2 года назад

    Am I the only one who sees Andrew Ng Junior? Good work man! Keep it up!

  • @GiacomoMiola
    @GiacomoMiola 2 года назад +9

    It's a MLP, you easily computed the backpropagation step in closed form, but I wonder how those famous frameworks can compute any network's partial-derivatives tensors automatically

    • @elliott614
      @elliott614 2 года назад +1

      usually the partial derivatives in backpropagation are of functions specifically chosen to be convex and have nothing to do with the problem you are working on, but are just ones that work nicely for ML algos

  • @lazyraccoon5516
    @lazyraccoon5516 Год назад

    would love to watch this but after the first 5 minutes I realized I have not reached this kind of level of math so see you in 3 years :)

  • @harisjaved1379
    @harisjaved1379 2 года назад +4

    I agree with you. I also did this by scratch. It was a lot of fun! What’s the point of masters math degree if I am not going to use it lol. Nice work!

    • @Pk-tw6li
      @Pk-tw6li 2 года назад

      bro can you help i also wanna learn can you tell us resources which you use to learn this neural network

    • @juliopaniagua8723
      @juliopaniagua8723 2 года назад

      @@Pk-tw6li study some basic linear algebra, just with that you'll understand at least 85% of whats going on with the algorithm

  • @Jayveersinh_Raj
    @Jayveersinh_Raj 2 года назад

    I really am like you, as you said you learn better when you dive deep into the scratch with equations you understand better. But, now I think that's the case with most of the people.

  • @cnitinrohit
    @cnitinrohit 3 года назад +13

    Hey, I found a flaw in your code and would be great if you answer it......The updation that you are doing for the bias' is not all needed as per your code because all the bias are changed by same factor hence it's still random( you have used a scalar to update the bias instead of a column vector)......I found the correct solution to it but getting an error. you should add the axis=1 in the sum function.

    • @lucasphillips2177
      @lucasphillips2177 2 года назад

      ya I encountered that, too and fixed it like you said.

  • @doctorshadow2482
    @doctorshadow2482 9 месяцев назад +2

    Good start. Some points:
    1. The article on the link in summary is no more available.
    2. It would be nice to pay more attention to backpropagation, since it is tricky; just a simple question how to choose between adjusting bias and weight?
    3. It would be nice to compare this NN with a simple checking against average "blurred" weighted maps for all numbers on pictures; just blur all 1's, blur separately all 2'th and then compare cosine distance. If the results would be the same as with the NN, the question would be about the Occam's Razor.

    • @Agorith_
      @Agorith_ 8 месяцев назад +1

      You can just use the wayback machine since its 3 years old vid.

    • @doctorshadow2482
      @doctorshadow2482 8 месяцев назад

      @@Agorith_ б, how is it related to my post?

    • @Agorith_
      @Agorith_ 8 месяцев назад

      @@doctorshadow2482 umm I said it for your first point-"The article on the link in summary is no more available."

    • @doctorshadow2482
      @doctorshadow2482 8 месяцев назад

      @@Agorith_ , so what? I just giving the update tho the author so that he could update the description or bring back the materials. It is not a complain, just a feedback.

    • @Agorith_
      @Agorith_ 8 месяцев назад

      @@doctorshadow2482 I am just making awareness to people who look your comment on where to look and which year to look into.

  • @DanIel-fl1vc
    @DanIel-fl1vc 2 года назад +11

    I've found that educators EVERYWHERE make things more complicated than they really are. The attitude goes something like this, if I explained it so a toddler could understand it. (Which they're capable of doing) I would be out of a job or people would think less of me. True of people talking about music, true of programming and of portrait painting as well. None of this is complicated, just explained poorly or not at all. Number one rule of educator, don't assume the student knows what you're talking about.

    • @doords
      @doords 2 года назад

      I see people in youtube videos just types for 5 minutes without saying a thing or suddenly start to rewrite things.

    • @abashimov
      @abashimov 2 года назад

      Spot on

    • @DanIel-fl1vc
      @DanIel-fl1vc 2 года назад +1

      @@doords What, I've been through the grind I know what I'm talking about.
      Music theory in particular is more than any other discipline guilty of this, programming to a lesser extent. There's a community of underachievers that need to boost their ego by making it seem harder than it is.
      Usually by using made up lingo instead of two words everyone are familiar with, or made up quirky symbols instead of something that visually makes sense to everyone.
      What could be explained in 20 minutes takes 3 years to "teach". It does annoy me, fragile egos that need to prove themselves and hammer down at anyone that doesn't suck up to their sense of...moral superiority or superiority in any way.
      If you want to teach something, stop messing about damn soy boy.

    • @MrCmon113
      @MrCmon113 Год назад

      It is more complicated if it's supposed to work with arbitrary amounts of layers.
      But yeah I think coding up something like this can be very helpful, because it shows you what information is actually available and typically not used by practitioners. You don't just have the gradients of batch-averages of losses - you have much more.

    • @JitendraYadav-w6d8c
      @JitendraYadav-w6d8c 9 месяцев назад +1

      Skill issue

  • @hamzaich7034
    @hamzaich7034 2 года назад

    maaan people like you are so rare here in youtube u have to make more videos like that