|
|
||
|---|---|---|
| .. | ||
| lab | ||
| OwnFramework.ipynb | ||
| README.md | ||
README.md
ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ಗಳಿಗೆ ಪರಿಚಯ. ಬಹು-ಪರತೆಯ ಪರ್ಸೆಪ್ಟ್ರಾನ್
ಹಿಂದಿನ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಅತ್ಯಂತ ಸರಳ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ ಮಾದರಿ - ಒಂದು-ಪರತೆಯ ಪರ್ಸೆಪ್ಟ್ರಾನ್, ಒಂದು ರೇಖೀಯ ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣ ಮಾದರಿಯನ್ನು ಕಲಿತಿದ್ದೀರಿ.
ಈ ವಿಭಾಗದಲ್ಲಿ ನಾವು ಈ ಮಾದರಿಯನ್ನು ಹೆಚ್ಚು ಲವಚಿಕವಾದ ರೂಪಕ್ಕೆ ವಿಸ್ತರಿಸುವೆವು, ಇದರಿಂದ ನಾವು:
- ಎರಡು ವರ್ಗದ ಜೊತೆಗೆ ಬಹು-ವರ್ಗ ವರ್ಗೀಕರಣ ಮಾಡಬಹುದು
- ವರ್ಗೀಕರಣದ ಜೊತೆಗೆ ರೆಗ್ರೆಷನ್ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಬಹುದು
- ರೇಖೀಯವಾಗಿ ವಿಭಜಿಸಲಾಗದ ವರ್ಗಗಳನ್ನು ವಿಭಜಿಸಬಹುದು
ನಾವು ಪೈಥಾನ್ನಲ್ಲಿ ನಮ್ಮದೇ ಮಾಯಾಜಾಲ ರೂಪರೇಖೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವೆವು, ಇದು ವಿವಿಧ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ ವಾಸ್ತುಶಿಲ್ಪಗಳನ್ನು ರಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಪೂರ್ವ-ವ್ಯಾಖ್ಯಾನ ಕ್ವಿಜ್
ಯಂತ್ರ ಅಧ್ಯಯನದ ರೂಪೀಕರಣ
ಯಂತ್ರ ಅಧ್ಯಯನ ಸಮಸ್ಯೆಯನ್ನು ರೂಪೀಕರಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ. ನಮಗೆ ತರಬೇತಿ ಡೇಟಾಸೆಟ್ X ಮತ್ತು ಲೇಬಲ್ಗಳಾದ Y ಇದ್ದರೆ, ನಾವು ಅತ್ಯಂತ ನಿಖರವಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುವ ಮಾದರಿ f ರಚಿಸಬೇಕಾಗುತ್ತದೆ. ಭವಿಷ್ಯವಾಣಿಗಳ ಗುಣಮಟ್ಟವನ್ನು ಲಾಸ್ ಫಂಕ್ಷನ್ ℒ ಮೂಲಕ ಅಳೆಯಲಾಗುತ್ತದೆ. ಕೆಳಗಿನ ಲಾಸ್ ಫಂಕ್ಷನ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತವೆ:
- ರೆಗ್ರೆಷನ್ ಸಮಸ್ಯೆಗೆ, ಸಂಖ್ಯೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬೇಕಾದಾಗ, ನಾವು ಅಬ್ಸೊಲ್ಯೂಟ್ ಎರರ್ ∑i|f(x(i))-y(i)| ಅಥವಾ ಸ್ಕ್ವೇರ್ಡ್ ಎರರ್ ∑i(f(x(i))-y(i))2 ಬಳಸಬಹುದು
- ವರ್ಗೀಕರಣಕ್ಕೆ, ನಾವು 0-1 ಲಾಸ್ (ಮೂಲತಃ ಮಾದರಿಯ ನಿಖರತೆಗೆ ಸಮಾನ) ಅಥವಾ ಲಾಜಿಸ್ಟಿಕ್ ಲಾಸ್ ಬಳಸುತ್ತೇವೆ.
ಒಂದು-ಪರತೆಯ ಪರ್ಸೆಪ್ಟ್ರಾನ್ನಲ್ಲಿ, f ಅನ್ನು ರೇಖೀಯ ಫಂಕ್ಷನ್ f(x)=wx+b ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿತ್ತು (ಇಲ್ಲಿ w ತೂಕ ಮ್ಯಾಟ್ರಿಕ್ಸ್, x ಇನ್ಪುಟ್ ವೈಶಿಷ್ಟ್ಯಗಳ ವೆಕ್ಟರ್, ಮತ್ತು b ಬಯಾಸ್ ವೆಕ್ಟರ್). ವಿಭಿನ್ನ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ ವಾಸ್ತುಶಿಲ್ಪಗಳಿಗೆ, ಈ ಫಂಕ್ಷನ್ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ರೂಪವನ್ನು ಪಡೆಯಬಹುದು.
ವರ್ಗೀಕರಣದ ಸಂದರ್ಭದಲ್ಲಿ, ಸಂಬಂಧಿತ ವರ್ಗಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳನ್ನು ನೆಟ್ವರ್ಕ್ ಔಟ್ಪುಟ್ ಆಗಿ ಪಡೆಯುವುದು ಇಚ್ಛನೀಯವಾಗಿರುತ್ತದೆ. ಯಾವುದೇ ಸಂಖ್ಯೆಯನ್ನು ಪ್ರಾಬಬಿಲಿಟಿಗಳಾಗಿ ಪರಿವರ್ತಿಸಲು (ಉದಾ. ಔಟ್ಪುಟ್ ಅನ್ನು ನಾರ್ಮಲೈಸ್ ಮಾಡಲು), ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ಸಾಫ್ಟ್ಮ್ಯಾಕ್ಸ್ ಫಂಕ್ಷನ್ σ ಬಳಸುತ್ತೇವೆ, ಮತ್ತು ಫಂಕ್ಷನ್ f ಆಗುತ್ತದೆ f(x)=σ(wx+b)
ಮೇಲಿನ f ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ, w ಮತ್ತು b ಅನ್ನು ಪ್ಯಾರಾಮೀಟರ್ಗಳು θ=⟨w,b⟩ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಡೇಟಾಸೆಟ್ ⟨X,Y⟩ ನೀಡಿದಾಗ, ನಾವು ಪ್ಯಾರಾಮೀಟರ್ಗಳ ಆಧಾರದ ಮೇಲೆ ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಮೇಲೆ ಒಟ್ಟು ದೋಷವನ್ನು ಲೆಕ್ಕಿಸಬಹುದು.
✅ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ ತರಬೇತಿಯ ಗುರಿ ದೋಷವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು, ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ
ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್ ಆಪ್ಟಿಮೈಜೆಷನ್
ಫಂಕ್ಷನ್ ಆಪ್ಟಿಮೈಜೆಷನ್ಗೆ ಪ್ರಸಿದ್ಧ ವಿಧಾನವೆಂದರೆ ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್. ಆಲೋಚನೆ ಎಂದರೆ, ನಾವು ಲಾಸ್ ಫಂಕ್ಷನ್ನ ಡೆರಿವೇಟಿವ್ (ಬಹು-ಮಾನದ ಪ್ರಕರಣದಲ್ಲಿ ಗ್ರೇಡಿಯಂಟ್) ಅನ್ನು ಪ್ಯಾರಾಮೀಟರ್ಗಳ ಪ್ರಕಾರ ಲೆಕ್ಕಿಸಿ, ದೋಷ ಕಡಿಮೆಯಾಗುವಂತೆ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಬದಲಾಯಿಸಬಹುದು. ಇದನ್ನು ಹೀಗೆ ರೂಪಿಸಬಹುದು:
- ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಕೆಲವು ಯಾದೃಚ್ಛಿಕ ಮೌಲ್ಯಗಳಿಂದ ಪ್ರಾರಂಭಿಸಿ w(0), b(0)
- ಕೆಳಗಿನ ಹಂತವನ್ನು ಅನೇಕ ಬಾರಿ ಪುನರಾವರ್ತಿಸಿ:
- w(i+1) = w(i)-η∂ℒ/∂w
- b(i+1) = b(i)-η∂ℒ/∂b
ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ, ಆಪ್ಟಿಮೈಜೆಷನ್ ಹಂತಗಳನ್ನು ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಪರಿಗಣಿಸಿ ಲೆಕ್ಕಿಸಬೇಕು (ಲಾಸ್ ಎಲ್ಲಾ ತರಬೇತಿ ಮಾದರಿಗಳ ಮೊತ್ತವಾಗಿ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ). ಆದರೆ ನಿಜ ಜೀವನದಲ್ಲಿ ನಾವು ಡೇಟಾಸೆಟ್ನ ಸಣ್ಣ ಭಾಗಗಳನ್ನು ಮಿನಿಬ್ಯಾಚ್ಗಳು ಎಂದು ತೆಗೆದು, ಆ ಭಾಗದ ಆಧಾರದ ಮೇಲೆ ಗ್ರೇಡಿಯಂಟ್ಗಳನ್ನು ಲೆಕ್ಕಿಸುತ್ತೇವೆ. ಪ್ರತಿಯೊಂದು ಬಾರಿ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಭಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದರಿಂದ, ಈ ವಿಧಾನವನ್ನು ಸ್ಟೋಚಾಸ್ಟಿಕ್ ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್ (SGD) ಎಂದು ಕರೆಯುತ್ತಾರೆ.
ಬಹು-ಪರತೆಯ ಪರ್ಸೆಪ್ಟ್ರಾನ್ಗಳು ಮತ್ತು ಬ್ಯಾಕ್ಪ್ರೊಪಾಗೇಶನ್
ಒಂದು-ಪರತೆಯ ನೆಟ್ವರ್ಕ್, ಮೇಲಿನಂತೆ, ರೇಖೀಯವಾಗಿ ವಿಭಜಿಸಬಹುದಾದ ವರ್ಗಗಳನ್ನು ವರ್ಗೀಕರಿಸಲು ಸಾಧ್ಯ. ಹೆಚ್ಚು ಸಮೃದ್ಧ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು, ನಾವು ನೆಟ್ವರ್ಕ್ನ ಹಲವು ಪರತಿಗಳನ್ನು ಸಂಯೋಜಿಸಬಹುದು. ಗಣಿತಶಾಸ್ತ್ರೀಯವಾಗಿ, ಇದು ಅರ್ಥವಾಗುತ್ತದೆ f ಫಂಕ್ಷನ್ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ರೂಪ ಹೊಂದಿದ್ದು, ಹಲವಾರು ಹಂತಗಳಲ್ಲಿ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ:
- z1=w1x+b1
- z2=w2α(z1)+b2
- f = σ(z2)
ಇಲ್ಲಿ, α ಒಂದು ಅರೇಖೀಯ ಸಕ್ರಿಯತೆ ಫಂಕ್ಷನ್, σ ಸಾಫ್ಟ್ಮ್ಯಾಕ್ಸ್ ಫಂಕ್ಷನ್, ಮತ್ತು ಪ್ಯಾರಾಮೀಟರ್ಗಳು θ=<w1,b1,w2,b2>.
ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್ ಆಲ್ಗಾರಿಥಮ್ ಅದೇ ಆಗಿರುತ್ತದೆ, ಆದರೆ ಗ್ರೇಡಿಯಂಟ್ಗಳನ್ನು ಲೆಕ್ಕಿಸುವುದು ಕಷ್ಟಕರವಾಗುತ್ತದೆ. ಚೈನ್ ವ್ಯುತ್ಪನ್ನ ನಿಯಮವನ್ನು ಅನುಸರಿಸಿ, ಡೆರಿವೇಟಿವ್ಗಳನ್ನು ಹೀಗೆ ಲೆಕ್ಕಿಸಬಹುದು:
- ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
- ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)
✅ ಚೈನ್ ವ್ಯುತ್ಪನ್ನ ನಿಯಮವನ್ನು ಬಳಸಿ ಲಾಸ್ ಫಂಕ್ಷನ್ನ ಡೆರಿವೇಟಿವ್ಗಳನ್ನು ಪ್ಯಾರಾಮೀಟರ್ಗಳ ಪ್ರಕಾರ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ.
ಎಲ್ಲಾ ಅಭಿವ್ಯಕ್ತಿಗಳ ಎಡಭಾಗವು ಒಂದೇ ಆಗಿರುವುದರಿಂದ, ನಾವು ಲಾಸ್ ಫಂಕ್ಷನ್ನಿಂದ ಪ್ರಾರಂಭಿಸಿ ಗಣನಾತ್ಮಕ ಗ್ರಾಫ್ ಮೂಲಕ "ಹಿಂದಕ್ಕೆ" ಹೋಗಿ ಡೆರಿವೇಟಿವ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಲೆಕ್ಕಿಸಬಹುದು. ಆದ್ದರಿಂದ ಬಹು-ಪರತೆಯ ಪರ್ಸೆಪ್ಟ್ರಾನ್ ತರಬೇತಿಯ ವಿಧಾನವನ್ನು ಬ್ಯಾಕ್ಪ್ರೊಪಾಗೇಶನ್ ಅಥವಾ 'ಬ್ಯಾಕ್ಪ್ರೊಪ್' ಎಂದು ಕರೆಯುತ್ತಾರೆ.
TODO: ಚಿತ್ರ ಉಲ್ಲೇಖ
✅ ನಾವು ನಮ್ಮ ನೋಟ್ಬುಕ್ ಉದಾಹರಣೆಯಲ್ಲಿ ಬ್ಯಾಕ್ಪ್ರೊಪ್ ಅನ್ನು ಹೆಚ್ಚಿನ ವಿವರದಲ್ಲಿ ಚರ್ಚಿಸುವೆವು.
ಸಾರಾಂಶ
ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ನಮ್ಮದೇ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ ಲೈಬ್ರರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೇವೆ ಮತ್ತು ಅದನ್ನು ಸರಳ ಎರಡು-ಮಾನದ ವರ್ಗೀಕರಣ ಕಾರ್ಯಕ್ಕೆ ಬಳಸಿದ್ದೇವೆ.
🚀 ಸವಾಲು
ಸಹಾಯಕ ನೋಟ್ಬುಕ್ನಲ್ಲಿ, ನೀವು ಬಹು-ಪರತೆಯ ಪರ್ಸೆಪ್ಟ್ರಾನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಮತ್ತು ತರಬೇತಿಸುವ ನಿಮ್ಮದೇ ರೂಪರೇಖೆಯನ್ನು ಜಾರಿಗೆ ತರಲಿದ್ದೀರಿ. ನೀವು ಆಧುನಿಕ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ವಿವರವಾಗಿ ನೋಡಬಹುದು.
OwnFramework ನೋಟ್ಬುಕ್ಗೆ ಹೋಗಿ ಅದನ್ನು ಅನುಸರಿಸಿ.
ಪೋಸ್ಟ್-ವ್ಯಾಖ್ಯಾನ ಕ್ವಿಜ್
ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ
ಬ್ಯಾಕ್ಪ್ರೊಪಾಗೇಶನ್ AI ಮತ್ತು ML ನಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಆಲ್ಗಾರಿಥಮ್, ಇದನ್ನು ಹೆಚ್ಚು ವಿವರವಾಗಿ ಅಧ್ಯಯನ ಮಾಡುವುದು ಲಾಭದಾಯಕ.
ಅಸೈನ್ಮೆಂಟ್
ಈ ಪ್ರಯೋಗಶಾಲೆಯಲ್ಲಿ, ನೀವು ಈ ಪಾಠದಲ್ಲಿ ನಿರ್ಮಿಸಿದ ರೂಪರೇಖೆಯನ್ನು ಬಳಸಿಕೊಂಡು MNIST ಕೈಯಿಂದ ಬರೆದ ಅಂಕಿ ವರ್ಗೀಕರಣವನ್ನು ಪರಿಹರಿಸುವಂತೆ ಕೇಳಲಾಗುತ್ತದೆ.
ಅಸ್ವೀಕರಣ:
ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ Co-op Translator ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.