గత పాఠాలలో న్యూరల్ నెట్వర్క్లకు వెయిట్లు ఉంటాయని, ట్రైనింగ్ ఆ వెయిట్లను సర్దుబాటు చేస్తుందని మీరు చూశారు. కానీ నెట్వర్క్కు ఏ వెయిట్లను మార్చాలో, ఎంత మార్చాలో ఎలా తెలుస్తుంది? సమాధానం బ్యాక్ప్రాపగేషన్ - ఆధునిక డీప్ లెర్నింగ్లో అత్యంత ముఖ్యమైన అల్గారిథం.
Andrej Karpathy దీన్ని "న్యూరల్ నెట్వర్క్ల గురించి అర్థం చేసుకోవడానికి అత్యంత ముఖ్యమైన విషయం" అని పిలుస్తారు. ఎందుకో చూద్దాం.
ఫార్వర్డ్ పాస్ సమయంలో, డేటా నెట్వర్క్ గుండా ఎడమ నుండి కుడికి ప్రవహిస్తుంది:
ప్రిడిక్షన్ను లాస్ ఫంక్షన్ (తదుపరి పాఠంలో చర్చించబడుతుంది) ఉపయోగించి నిజమైన సమాధానంతో పోల్చబడుతుంది. లాస్ అనేది ఒక సంఖ్య, ఇది చెబుతుంది: "మీరు ఎంత తప్పు."
మీరు కేక్ చేశారని, అది చాలా చెడ్డగా ఉందని ఊహించుకోండి. మీరు ఐదు పదార్థాలు ఉపయోగించారు. ప్రశ్న ఏమిటంటే: చెడు రుచికి ఏ పదార్థం ఎక్కువగా దోహదపడింది, ఎంత వరకు?
బ్యాక్ప్రాపగేషన్ న్యూరల్ నెట్వర్క్ల కోసం సరిగ్గా ఈ ప్రశ్నకు సమాధానం ఇస్తుంది. ఇది ప్రతి వెయిట్కు బ్లేమ్ కేటాయిస్తుంది: "నేను ఈ వెయిట్ను కొద్దిగా మారిస్తే, లాస్ ఎంత మారుతుంది?"
ఆ మార్పు రేటును గ్రేడియంట్ అంటారు, ఇది కాలిక్యులస్ నుండి వస్తుంది - ప్రత్యేకంగా, డెరివేటివ్.
"AI గాడ్ఫాదర్లలో" ఒకరైన Geoffrey Hinton, బ్యాక్ప్రాపగేషన్ డీప్ లెర్నింగ్ను ఆచరణాత్మకంగా మార్చిన ముఖ్య ఆలోచన అని చెప్పారు. ఇది లేకుండా, మిలియన్ల పారామీటర్లతో నెట్వర్క్లను ట్రైన్ చేయడం కంప్యుటేషనల్గా అసాధ్యం.
న్యూరల్ నెట్వర్క్లు కలిపి రాసిన సరళమైన ఆపరేషన్ల గొలుసులు. కాలిక్యులస్ నుండి వచ్చే చైన్ రూల్ కంపోజ్డ్ ఫంక్షన్లను ఎలా డిఫరెన్షియేట్ చేయాలో చెబుతుంది:
y = f(g(x))అయితే,dy/dx = f'(g(x)) × g'(x).
Sign in to join the discussion
రోజువారీ ఉదాహరణ: మీరు షాపుకు డ్రైవ్ చేస్తున్నారు. మీ స్పీడ్ మీరు యాక్సిలరేటర్ను ఎంత గట్టిగా నొక్కుతారనే దానిపై ఆధారపడి ఉంటుంది. యాక్సిలరేటర్ స్థానం ట్రాఫిక్పై ఆధారపడి ఉంటుంది. ట్రాఫిక్ మీ స్పీడ్ను ఎలా ప్రభావితం చేస్తుందో తెలుసుకోవడానికి, మీరు గుణిస్తారు: (యాక్సిలరేటర్ ప్రెస్ ప్రతి స్పీడ్) × (ట్రాఫిక్ పరిస్థితి ప్రతి యాక్సిలరేటర్ ప్రెస్). ఇదే చైన్ రూల్ - ఒక గొలుసు వెంట స్థానిక మార్పు రేట్లను గుణించడం.
బ్యాక్ప్రాపగేషన్ 1986లో Rumelhart, Hinton, మరియు Williams రాసిన చారిత్రాత్మక పేపర్ ద్వారా ప్రాచుర్యం పొందింది, కానీ రివర్స్-మోడ్ ఆటోమేటిక్ డిఫరెన్షియేషన్ యొక్క ప్రధాన ఆలోచన 1960ల నాటిది.
PyTorch వంటి ఆధునిక ఫ్రేమ్వర్క్లు ఫార్వర్డ్ పాస్ సమయంలో కంప్యుటేషన్ గ్రాఫ్ను నిర్మిస్తాయి. ప్రతి ఆపరేషన్ - add, multiply, ReLU - ఒక నోడ్ అవుతుంది. బ్యాక్ప్రాపగేషన్ ఈ గ్రాఫ్ను రివర్స్లో నడుస్తుంది, ప్రతి నోడ్ వద్ద చైన్ రూల్ వర్తింపజేసి గ్రేడియంట్లను లెక్కిస్తుంది.
దీన్ని నది వ్యవస్థలా ఊహించుకోండి. లాస్ అనేది చివరలో ఉన్న సముద్రం. బ్యాక్ప్రాప్ ప్రతి ఉపనదిని పైవైపుకు గుర్తిస్తుంది - ప్రతి మూలం (వెయిట్) తుది ప్రవాహానికి ఎంత దోహదపడిందో తెలుసుకోవడానికి.
L = (w × x - y)² అనుకుందాం, w = 2, x = 3, y = 10 తో.
w × x = 6, తర్వాత 6 - 10 = -4, తర్వాత (-4)² = 16. Loss = 16.dL/d(diff) = 2 × (-4) = -8, తర్వాత d(diff)/d(wx) = 1, కాబట్టి dL/d(wx) = -8.d(wx)/dw = x = 3, కాబట్టి dL/dw = -8 × 3 = -24.−24 గ్రేడియంట్ మనకు చెబుతుంది: wను పెంచడం వల్ల లాస్ వేగంగా తగ్గుతుంది. మెరుగుపడటానికి మనకు కావలసిన సంకేతం ఇదే.
చైన్ రూల్లో, ప్రతి నోడ్ వద్ద లోకల్ డెరివేటివ్లతో మనం ఏమి చేస్తాము?
డీప్ నెట్వర్క్లో, గ్రేడియంట్లు అనేక లేయర్ల గుండా ప్రయాణించాలి. ప్రతి లేయర్ గ్రేడియంట్ను దాని లోకల్ డెరివేటివ్తో గుణిస్తుంది. ఇది రెండు ప్రమాదకరమైన వైఫల్య మోడ్లను సృష్టిస్తుంది:
లోకల్ డెరివేటివ్లు చిన్నవిగా ఉంటే (ఉదా., sigmoid ఫంక్షన్ 0 లేదా 1 దగ్గర సాచురేట్ అయితే), పదే పదే గుణించడం వల్ల గ్రేడియంట్లు సున్నా వైపు కుదించబడతాయి. ప్రారంభ లేయర్లు దాదాపు సంకేతం అందుకోవు - అవి నేర్చుకోవడం కష్టమవుతుంది. ఇది ప్రారంభ డీప్ నెట్వర్క్లను వేధించింది.
లోకల్ డెరివేటివ్లు పెద్దవిగా ఉంటే, గ్రేడియంట్లు ఎక్స్పోనెన్షియల్గా పెరుగుతాయి. వెయిట్లు భారీ అప్డేట్లు పొందుతాయి, నెట్వర్క్ అస్థిరంగా మారుతుంది, NaN విలువలను ఉత్పత్తి చేస్తుంది.
ReLU డెరివేటివ్ 0 లేదా 1 మాత్రమే - యాక్టివ్గా ఉన్నప్పుడు ఇది గ్రేడియంట్ను ఎప్పుడూ కుదించదు. ఈ సరళమైన లక్షణం డీప్ నెట్వర్క్ల ట్రైనింగ్కు ఎందుకు విప్లవాత్మకంగా ఉండేది?
ఆధునిక పరిష్కారాలు:
బ్యాక్ప్రాప్ ప్రతి గ్రేడియంట్ను లెక్కించిన తర్వాత, ఆప్టిమైజర్ (తదుపరి పాఠం) ప్రతి వెయిట్ను అప్డేట్ చేస్తుంది:
w_new = w_old - learning_rate × gradient
లెర్నింగ్ రేట్ స్టెప్ సైజ్ను నియంత్రిస్తుంది. చాలా పెద్దగా ఉంటే మీరు ఓవర్షూట్ చేస్తారు; చాలా చిన్నగా ఉంటే ట్రైనింగ్ ఎప్పటికీ పూర్తికాదు. గ్రేడియంట్ మీకు దిశను చెబుతుంది; లెర్నింగ్ రేట్ ఎంత దూరం అడుగు వేయాలో చెబుతుంది.
డీప్ నెట్వర్క్లలో వేనిషింగ్ గ్రేడియంట్లకు కారణం ఏమిటి?
ChatGPT తన తదుపరి-పదం ప్రిడిక్షన్ను మెరుగుపరచినప్పుడల్లా, సెల్ఫ్-డ్రైవింగ్ కారు తన స్టీరింగ్ను మెరుగుపరచినప్పుడల్లా, బ్యాక్ప్రాపగేషన్ లోపల నడుస్తుంది. ఇది తప్పుల నుండి నేర్చుకోవడాన్ని గణితశాస్త్రపరంగా ఖచ్చితంగా చేసే అల్గారిథం.
బ్యాక్ప్రాప్ లేకుండా, మిలియన్లు - లేదా బిలియన్ల - పారామీటర్లతో నెట్వర్క్లను ట్రైన్ చేయడానికి సమర్థవంతమైన మార్గం ఉండదు.
ఒక గ్రేడియంట్ ఒక వెయిట్ గురించి మనకు ఏమి చెబుతుంది?
Karpathy బ్యాక్ప్రాప్ "చైన్ రూల్ యొక్క రికర్సివ్ అప్లికేషన్ మాత్రమే" అని నొక్కి చెబుతారు. మీరు చైన్ రూల్ మరియు కంప్యుటేషన్ గ్రాఫ్లను అర్థం చేసుకుంటే, బ్యాక్ప్రాప్ను అర్థం చేసుకున్నట్టే. సరళమైన, కంపోజబుల్ ముక్కలుగా విభజించడం ద్వారా ఇతర సంక్లిష్ట వ్యవస్థలను అర్థం చేసుకోవచ్చా?