Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🟣 ML + AI  ·  Lesson 37

AI Ethics और Responsible AI

Responsible AI क्या है?

AI systems अब तय करने में मदद करते हैं कि loan किसे मिले, कौन सा CV shortlist हो, हम कौन सी ख़बरें देखें और किन students को अतिरिक्त मदद चाहिए। Responsible AI का मतलब है इन systems को ऐसे बनाना और इस्तेमाल करना कि वे निष्पक्ष, सुरक्षित, निजी, पारदर्शी और जवाबदेह हों। यह सिर्फ़ दार्शनिकों का विषय नहीं – ज़्यादातर समस्याएँ data और testing के साधारण technical फ़ैसलों से शुरू होती हैं।

सिद्धांतपूछने का सवाल
Fairnessक्या system अलग-अलग groups (gender, क्षेत्र, भाषा) के लिए बराबर अच्छा चलता है?
Privacyक्या हम सिर्फ़ ज़रूरी data, सहमति से लेते और सुरक्षित रखते हैं?
Transparencyक्या हम समझा सकते हैं कि system ने फ़ैसला क्यों लिया?
Safety और reliabilityग़लत होने पर क्या होगा? क्या ज़रूरी फ़ैसलों को इंसान जाँच रहा है?
Accountabilityज़िम्मेदार कौन है और लोग शिकायत या अपील कैसे करें?

Bias: model अन्याय कैसे सीखता है

Model पुराने data से patterns सीखता है। अगर पुराने फ़ैसले अन्यायपूर्ण थे, या कोई group कम दर्शाया गया है, तो model उसी अन्याय को बड़े पैमाने पर दोहराता है। नीचे एक synthetic scholarship dataset (पढ़ाने के लिए बनाया गया) है जिसमें पुरानी committees ने समान marks पर भी शहर के applicants को प्राथमिकता दी।

Python – learned_bias.py
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

rng = np.random.default_rng(0)
n = 2000
area = rng.choice(["city", "village"], size=n, p=[0.6, 0.4])
marks = rng.normal(75, 10, n).clip(35, 100)
income = rng.normal(4, 1.5, n).clip(0.5, 12)                    # lakh per year
# historical (biased) decisions: same marks, but villages approved less often
logit = 0.25 * (marks - 75) - 0.4 * (income - 4) + np.where(area == "city", 0.8, -0.8)
approved = rng.random(n) < 1 / (1 + np.exp(-logit))
df = pd.DataFrame({"area": area, "marks": marks.round(), "income": income.round(1), "approved": approved})

X = pd.get_dummies(df[["marks", "income", "area"]], drop_first=True)   # area_village column
model = LogisticRegression(max_iter=1000).fit(X, df["approved"])
df["predicted"] = model.predict(X)

rates = df.groupby("area")[["approved", "predicted"]].mean().round(2)
print(rates)
print("weight on area_village:", round(model.coef_[0][list(X.columns).index("area_village")], 2))
approved predicted area city 0.60 0.61 village 0.38 0.37 weight on area_village: -1.57

Model ने “village” के लिए बड़ा negative weight सीख लिया और गाँव के बहुत कम applicants approve करता है – उसने पुरानी committees का bias copy कर लिया।

Fairness नापना

सिर्फ़ area column हटाने से अक्सर bias ठीक नहीं होता, क्योंकि दूसरे columns (school का नाम, PIN code, भाषा) छिपे proxies बन सकते हैं। पहले बराबर योग्य लोगों के बीच groups के नतीजों का अंतर नापें।

Python – fairness_metrics.py
import numpy as np
import pandas as pd

rng = np.random.default_rng(0)
n = 2000
area = rng.choice(["city", "village"], size=n, p=[0.6, 0.4])
marks = rng.normal(75, 10, n).clip(35, 100)

def report(name, predicted):
    df = pd.DataFrame({"area": area, "top": marks >= 85, "pred": predicted})
    sel = df.groupby("area")["pred"].mean()
    tpr = df[df["top"]].groupby("area")["pred"].mean()          # among strong students
    print(f"{name}")
    print(f"  selection rate  city {sel['city']:.2f} | village {sel['village']:.2f} | gap {sel['city'] - sel['village']:.2f}")
    print(f"  top students OK city {tpr['city']:.2f} | village {tpr['village']:.2f} | gap {tpr['city'] - tpr['village']:.2f}")

biased = (marks + np.where(area == "city", 8, -8)) >= 80     # a rule that adds points for city
fair = marks >= 80                                          # the same cut-off for everyone
report("biased rule", biased)
report("same cut-off for all", fair)
biased rule selection rate city 0.61 | village 0.10 | gap 0.51 top students OK city 1.00 | village 0.60 | gap 0.40 same cut-off for all selection rate city 0.30 | village 0.32 | gap -0.01 top students OK city 1.00 | village 1.00 | gap 0.00
Metricअर्थ
Selection-rate gap (demographic parity)हर group के चुने गए हिस्से का अंतर
True-positive-rate gap (equal opportunity)जो “हाँ” के हक़दार हैं, उनमें हर group को कितनी बार मिला
Per-group accuracyक्या model हर group के लिए बराबर सही है?
📝 Fairness के लिए इंसानी समझ ज़रूरी

अलग fairness metrics आपस में टकरा सकते हैं, और सही चुनाव स्थिति और कानून पर निर्भर है। Metrics समस्या दिखाते हैं; domain जानकार और प्रभावित समुदाय को उपाय तय करना चाहिए।

Privacy: कम लें, ज़्यादा बचाएँ

भारत का Digital Personal Data Protection Act, 2023 personal data के लिए वैध उद्देश्य और सहमति माँगता है, और लोगों को अपने data पर अधिकार देता है। अच्छी engineering आदतें: सिर्फ़ ज़रूरी data लें, analysis या AI services को text भेजने से पहले पहचान वाली जानकारी mask या हटाएँ, और ज़रूरत न रहने पर data delete करें।

Python – mask_personal_data.py
import hashlib
import re

note = ("Parent Ramesh Kumar (9829012345, ramesh.k@gmail.com) says Aadhaar 2345 6789 0123 "
        "was submitted. Address: 14 Johari Bazaar, Jaipur 302003.")

PATTERNS = {
    "PHONE": r"\b[6-9]\d{9}\b",
    "EMAIL": r"\b[\w.+-]+@[\w-]+\.[\w.]+\b",
    "AADHAAR": r"\b\d{4}\s?\d{4}\s?\d{4}\b",
    "PIN": r"\b[1-9]\d{5}\b",
}

def mask(text):
    for label, pattern in PATTERNS.items():
        text = re.sub(pattern, f"[{label}]", text)
    return text

def pseudonym(name, salt="school-2026"):
    return "P-" + hashlib.sha256((salt + name).encode()).hexdigest()[:8]

print(mask(note))
print("Ramesh Kumar →", pseudonym("Ramesh Kumar"))
Parent Ramesh Kumar ([PHONE], [EMAIL]) says Aadhaar [AADHAAR] was submitted. Address: 14 Johari Bazaar, Jaipur [PIN]. Ramesh Kumar → P-bfaa65d6

Regex masking आम formats पकड़ता है पर सब कुछ नहीं (नाम, मकान नंबर)। संवेदनशील projects में इसे access control और इंसानी जाँच के साथ जोड़ें – और test files में असली Aadhaar numbers कभी न रखें।

Transparency: फ़ैसले समझाएँ

Python – explain_model.py
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importance
from sklearn.model_selection import train_test_split

data = load_breast_cancer(as_frame=True)
X_tr, X_te, y_tr, y_te = train_test_split(data.data, data.target, random_state=0, stratify=data.target)
model = RandomForestClassifier(n_estimators=200, random_state=0).fit(X_tr, y_tr)

imp = permutation_importance(model, X_te, y_te, n_repeats=10, random_state=0)
top = pd.Series(imp.importances_mean, index=X_te.columns).sort_values(ascending=False).head(5)
print("test accuracy:", round(model.score(X_te, y_te), 3))
print("features the model relies on most:")
print(top.round(4).to_string())
test accuracy: 0.944 features the model relies on most: worst area 0.0098 worst concave points 0.0091 mean concave points 0.0070 mean concavity 0.0070 worst texture 0.0063

Permutation importance एक बार में एक column shuffle करके नापता है कि accuracy कितनी गिरी। अगर model ज़्यादातर किसी अप्रासंगिक चीज़ (ID number, hospital का नाम) पर टिका हो, तो यह चेतावनी है। SHAP जैसे tools हर व्यक्ति के लिए explanation देते हैं।

Generative AI के ख़तरे

ख़तराउदाहरणआप क्या कर सकते हैं
Deepfakesकिसी नेता का नकली video या पैसे माँगती नकली आवाज़ वाली callदूसरे माध्यम से जाँचें; cybercrime.gov.in पर या 1930 पर शिकायत
ग़लत जानकारीआत्मविश्वास भरे पर ग़लत जवाब या नकली citationsShare करने से पहले आधिकारिक स्रोत जाँचें
Copyrightकिसी के काम से मिलता-जुलता बना text/imageOriginal content; स्रोतों को credit; licences मानें
शैक्षणिक ईमानदारीAI से लिखा homework अपना बताकर जमा करनाSchool के नियम मानें; AI सीखने के लिए, copy के लिए नहीं
ज़्यादा निर्भरताProfessional के बिना AI की medical या legal सलाह माननासमझने के लिए AI, फ़ैसलों के लिए professionals

आपके project के लिए responsible-AI checklist

  1. उद्देश्य: यह कौन सा फ़ैसला सहारा देता है, और ग़लत होने पर किसे नुकसान हो सकता है?
  2. Data: कहाँ से आया, क्या सहमति है, कौन से groups ग़ायब या छोटे हैं?
  3. Testing: हर group की accuracy, fairness gaps, edge cases, उलझाने वाले inputs।
  4. Privacy: न्यूनतम data, masking, सुरक्षित storage, delete करने की योजना।
  5. इंसानी निगरानी: ज़रूरी या अनिश्चित मामलों को कौन जाँचेगा?
  6. Transparency: users को बताएँ कि AI शामिल है और अपील कैसे करें।
  7. Monitoring: launch के बाद performance दोबारा जाँचें, क्योंकि data बदलता है।

अभ्यास

  1. learned_bias.py में area column हटाकर दोबारा train करें। क्या gap ख़त्म होता है? क्यों या क्यों नहीं?
  2. Masking function में PAN numbers (ABCDE1234F) का pattern जोड़ें।
  3. जिस AI app का आप इस्तेमाल करते हैं उसके लिए 7-point checklist भरें।
  4. इस course के किसी model के लिए एक page का “model card” लिखें: उद्देश्य, data, accuracy, सीमाएँ।

सारांश

  • Models पुराने data से patterns copy करते हैं – अन्यायपूर्ण भी।
  • हर group के लिए fairness नापें; एक column हटाना शायद ही काफ़ी हो।
  • कम personal data लें, पहचान mask करें और DPDP Act मानें।
  • Models समझाएँ (permutation importance, SHAP) और ज़रूरी फ़ैसले इंसानों के हाथ में रखें।
  • AI output जाँचें, AI content पर label लगाएँ और deepfake fraud की शिकायत करें।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

क्या भारत में AI का कानून है?
भारत में अभी एक अलग AI-विशेष कानून नहीं है। Personal data Digital Personal Data Protection Act 2023 के अंतर्गत आता है, और IT Act के नियम व advisories online platforms और deepfakes पर लागू होते हैं। नियम बदल रहे हैं, इसलिए असली projects के लिए नवीनतम आधिकारिक guidance देखें।
क्या AI कभी पूरी तरह निष्पक्ष हो सकता है?
शायद नहीं, क्योंकि data और लक्ष्य लोग चुनते हैं। व्यावहारिक लक्ष्य है bias नापना, जहाँ नुकसान हो वहाँ घटाना, सीमाओं के बारे में खुलापन और लोगों को फ़ैसलों को चुनौती देने देना।
← Back to Python Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicStudents के लिए AI Project Ideas आपकी प्रगति: 37 / 66 (56%) · Lesson 38 / 66 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें