"The question is not whether AI will transform society, but how — and who decides."
AI systems increasingly make decisions affecting:
- Hiring and lending
- Healthcare diagnoses
- Criminal justice
- Content moderation
- Autonomous vehicles
Core Ethical Principles
Principle
Description
Beneficence
Do good, promote well-being
Non-maleficence
Do no harm
Autonomy
Respect human agency and consent
Justice
Fair distribution of benefits/burdens
Explicability
Transparency and accountability
Key Issue Areas
1. Bias and Fairness
Problem: Historical bias in training data → learns historical discrimination
Example: Amazon's hiring tool (2018) — Trained on 10 years of resumes → penalized women's colleges, terms like "women's chess club"
Type of Bias
Source
Mitigation
Historical
Past discrimination in data
Reweighting, counterfactual fairness
Measurement
Proxy variables (zip code → race)
Remove proxies, causal modeling
Representation
Under-sampled groups
Oversampling, synthetic data
Evaluation
Metrics favor majority
Disaggregated metrics, equality constraints
2. Transparency & Explainability
Level
Description
Example
Global
How model works overall
Feature importance plots
Local
Why specific prediction
SHAP, LIME
Counterfactual
What would change outcome
"If income +$10k → approved"
# Explainable AI example
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test)
// C++ doesn't have native SHAP library
// Use Python bindings or integrate with Python for SHAP
// Alternative: Use ML libraries with built-in feature importance
// Example using LightGBM feature importance
#include <LightGBM/c_api.h>
void print_feature_importance(BoosterHandle booster) {
int num_features = 0;
int* feature_importance = nullptr;
LGBM_BoosterGetFeatureImportance(booster, 0, -1, &num_features, &feature_importance);
for (int i = 0; i < num_features; ++i) {
const char* name = nullptr;
LGBM_BoosterGetFeatureName(booster, i, &name);
std::cout << name << ": " << feature_importance[i] << "\n";
}
free(feature_importance);
}
import java.util.*;
import ai.djl.modality.vision.transforms.*;
import ai.djl.modality.vision.classification.*;
// Use DJL or Weka for feature importance in Java
import ai.djl.repository.zoo.*;
public class FeatureImportanceExample {
public static void main(String[] args) {
// Using DJL for XGBoost/LightGBM feature importance
// This is a placeholder - actual implementation depends on model
System.out.println("Use DJL/Weka for feature importance in Java");
}
}
using System;
using Microsoft.ML;
using Microsoft.ML.Data;
// ML.NET feature importance (permutation-based)
public class FeatureImportanceExample {
public static void Main() {
// ML.NET permutation feature importance
var context = new MLContext();
// Example using permutation feature importance
// var importance = context.PermutationFeatureImportance(trainedModel, testData, labelColumn);
Console.WriteLine("Use ML.NET permutation feature importance");
}
}