గత పాఠంలో మీరు డెసిషన్ ట్రీలు, KNN మరియు లీనియర్ రిగ్రెషన్ నేర్చుకున్నారు. అవి శక్తివంతమైనవి — కానీ ముఖ గుర్తింపు లేదా భాష అర్థం చేసుకోవడం వంటి సంక్లిష్ట పనుల్లో కష్టపడతాయి.
ఆ పనులకు మనకు న్యూరల్ నెట్వర్క్లు కావాలి — మీ మెదడు ఎలా పనిచేస్తుందో దాని నుండి ప్రేరణ పొందిన అల్గారిథమ్లు.
మీ మెదడులో సుమారు 86 బిలియన్ న్యూరాన్లు ఉన్నాయి. ప్రతి ఒక్కటి:
కృత్రిమ న్యూరాన్ కూడా అదే చేస్తుంది, కానీ సంఖ్యలతో:
ఇన్పుట్ వెయిట్లు మొత్తం యాక్టివేషన్ ఔట్పుట్
────── ────── ────── ────────── ──────
x₁ = 0.5 ──→ w₁ = 0.8 ─┐
├──→ 1.25 ──→ f(1.25) ──→ 0.78
x₂ = 0.3 ──→ w₂ = 1.5 ─┘
మొత్తం = (0.5 × 0.8) + (0.3 × 1.5) = 0.40 + 0.85 = 1.25
వెయిట్లను మిక్సింగ్ బోర్డ్పై వాల్యూమ్ నాబ్లుగా భావించండి. ప్రతి ఇన్పుట్ వేరే వాయిద్యం. వెయిట్లు ప్రతి వాయిద్యం ఎంత బిగ్గరగా ఉంటుందో నియంత్రిస్తాయి. న్యూరాన్ వాటిని కలుపుతుంది, మరియు యాక్టివేషన్ ఫంక్షన్ కలిపిన శబ్దం ముందుకు పంపడానికి సరిపోతుందా నిర్ణయిస్తుంది.
ఒక న్యూరాన్ ఎక్కువ చేయలేదు. శక్తి పొరలుగా నిర్వహించడం నుండి వస్తుంది.
1. ఇన్పుట్ లేయర్ — కళ్ళు మరియు చెవులు 👀
2. హిడెన్ లేయర్(లు) — ఆలోచించే మెదడు 🧠
3. ఔట్పుట్ లేయర్ — సమాధానం 💡
ఇన్పుట్ లేయర్ హిడెన్ లేయర్ 1 హిడెన్ లేయర్ 2 ఔట్పుట్ లేయర్
(3 లక్షణాలు) (4 న్యూరాన్లు) (4 న్యూరాన్లు) (2 క్లాసులు)
[x₁] ──────→ [h₁] ──────→ [h₅] ──────→ [పిల్లి: 0.92]
[x₂] ──────→ [h₂] ──────→ [h₆] ──────→ [కుక్క: 0.08]
[x₃] ──────→ [h₃] ──────→ [h₇]
[h₄] ──────→ [h₈]
"డీప్ లెర్నింగ్" అంటే చాలా హిడెన్ లేయర్లు ఉన్న న్యూరల్ నెట్వర్క్ — 2 కంటే ఎక్కువ. GPT-4 లో 100 కంటే ఎక్కువ లేయర్లు ఉన్నాయి! ఎక్కువ లేయర్లు నెట్వర్క్ను ఎక్కువ నైరూప్య నమూనాలు నేర్చుకోనిస్తాయి: అంచులు → ఆకారాలు → వస్తువులు → దృశ్యాలు.
న్యూరాన్ తన ఇన్పుట్లు కూడిన తర్వాత నిర్ణయిస్తుంది: నేను యాక్టివేట్ అవ్వాలా వద్దా?
వాల్వ్ ఉన్న నీటి పైపు ఊహించుకోండి:
ReLU — సాధారణ గేట్
def relu(x):
return max(0, x)
print(relu(3.5)) # 3.5 (పాజిటివ్ → వెళ్తుంది)
print(relu(-2.0)) # 0.0 (నెగటివ్ → ఆగిపోయింది)
Sigmoid — మెత్తటి కుదింపు
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
print(sigmoid(5.0)) # 0.993 (చాలా నమ్మకంగా "అవును")
print(sigmoid(0.0)) # 0.500 (పూర్తిగా అనిశ్చితం)
print(sigmoid(-5.0)) # 0.007 (చాలా నమ్మకంగా "కాదు")
Softmax — ఓట్ల లెక్కింపుదారు
ముడి ఔట్పుట్లు: [2.0, 1.0, 0.5]
Softmax తర్వాత: [0.59, 0.24, 0.17] → పిల్లి (59%), కుక్క (24%), పక్షి (17%)
యాక్టివేషన్ ఫంక్షన్లు ఎందుకు అవసరం? వాటి లేకుండా న్యూరల్ నెట్వర్క్ — ఎన్ని లేయర్లు ఉన్నా — కేవలం లీనియర్ రిగ్రెషన్ మాత్రమే అవుతుంది. యాక్టివేషన్ ఫంక్షన్లు నాన్-లీనియారిటీ తీసుకువస్తాయి, దీనివల్ల నెట్వర్క్ వక్రరేఖలు మరియు సంక్లిష్ట నమూనాలు నేర్చుకోగలదు.
రిలే రేస్ లాగా ఆలోచించండి:
ఆపిల్ లేదా నారింజ వర్గీకరించడం:
ఇన్పుట్: బరువు = 150g, రంగు = 0.8 (నారింజ రంగు)
దశ 1 — ఇన్పుట్ లేయర్ విలువలు పంపుతుంది:
x₁ = 150 (బరువు), x₂ = 0.8 (రంగు)
దశ 2 — హిడెన్ న్యూరాన్ 1:
మొత్తం = (150 × 0.01) + (0.8 × 2.0) + bias(0.1) = 3.2
ఔట్పుట్ = ReLU(3.2) = 3.2
దశ 3 — హిడెన్ న్యూరాన్ 2:
మొత్తం = (150 × -0.005) + (0.8 × 1.5) + bias(0.3) = 0.75
ఔట్పుట్ = ReLU(0.75) = 0.75
దశ 4 — ఔట్పుట్ లేయర్:
ఆపిల్_స్కోర్ = (3.2 × -0.5) + (0.75 × 0.8) = -1.0
నారింజ_స్కోర్ = (3.2 × 0.7) + (0.75 × 0.3) = 2.465
దశ 5 — Softmax:
ఆపిల్: 18%
నారింజ: 82% ← అంచనా: నారింజ! 🍊
ఫార్వర్డ్ ప్రాపగేషన్ అంచనా ఇస్తుంది. కానీ తప్పు అయితే? అప్పుడు బ్యాక్ప్రాపగేషన్ వస్తుంది.
ఫార్వర్డ్ ప్రాపగేషన్: డేటా → నెట్వర్క్ → అంచనా
↓
పోల్చడం: అంచనా vs నిజమైన సమాధానం = ఎర్రర్
↓
బ్యాక్ప్రాపగేషన్: ఎర్రర్ నెట్వర్క్లో వెనక్కి వెళ్తుంది
↓
అప్డేట్: ఎర్రర్ తగ్గించడానికి వెయిట్లు సరిచేయండి
↓
పునరావృతం: వేల సార్లు!
లోపభూయిష్ట ఉత్పత్తులు తయారుచేస్తున్న ఫ్యాక్టరీ అసెంబ్లీ లైన్ ఊహించుకోండి. సమస్యను పరిష్కరించడానికి, తుది ఉత్పత్తి నుండి ప్రతి స్టేషన్ వరకు వెనక్కి ట్రేస్ చేయండి: "ప్యాకేజింగ్ తప్పా? పెయింటింగ్? ముడి పదార్థం?" ప్రతి స్టేషన్ తన ప్రక్రియను సరిచేస్తుంది. అదే బ్యాక్ప్రాపగేషన్.
స్పామ్ ఇ-మెయిల్ వర్గీకరించే చిన్న నెట్వర్క్ ద్వారా డేటా ట్రేస్ చేయండి.
లక్షణాలు:
import math
# ఇన్పుట్లు
x1, x2 = 5, 1
# హిడెన్ న్యూరాన్ 1
z1 = (x1 * 0.6) + (x2 * 0.9) + 0.1 # = 4.0
h1 = max(0, z1) # ReLU → 4.0
# హిడెన్ న్యూరాన్ 2
z2 = (x1 * 0.3) + (x2 * 0.4) + 0.2 # = 2.1
h2 = max(0, z2) # ReLU → 2.1
# ఔట్పుట్ న్యూరాన్
z_out = (h1 * 0.7) + (h2 * 0.5) - 0.5 # = 3.35
output = 1 / (1 + math.exp(-z_out)) # Sigmoid → 0.966
print(f"హిడెన్ లేయర్: h1={h1}, h2={h2}")
print(f"ముడి ఔట్పుట్: {z_out:.2f}")
print(f"స్పామ్ సంభావ్యత: {output:.1%}") # 96.6% → స్పామ్! 🚫
డేటా (పాఠం 1) → అల్గారిథమ్ (పాఠం 2) → న్యూరల్ నెట్వర్క్ (పాఠం 3)
📊 🧮 🧠
న్యూరల్ నెట్వర్క్లు వీటికి శక్తినిస్తాయి:
న్యూరల్ నెట్వర్క్ల ప్రాథమిక ఆలోచన 1943 లో ప్రతిపాదించబడింది — 80 సంవత్సరాల కంటే ఎక్కువ! కానీ 2010 దశకంలో మాత్రమే ఆచరణాత్మకమయ్యాయి, మనకు తగినంత డేటా మరియు వేగవంతమైన కంప్యూటర్లు (GPU లు) వచ్చినప్పుడు.
అభినందనలు — మీరు ఇప్పుడు AI యొక్క మూడు స్తంభాలను అర్థం చేసుకున్నారు: డేటా, అల్గారిథమ్లు మరియు న్యూరల్ నెట్వర్క్లు! రాబోయే పాఠాలలో AI టూల్స్ మరియు బాధ్యతాయుతమైన AI గురించి తెలుసుకుందాం 🌱