[인지적 갈등 >> 물리법칙 발견 >> 수학적 변수 확장 >> AI제어]
대상: 고1~3(직선의 방정식, 일-에너지 정리, 이차함수)
[1차시] 순수 AI 도전, 실패, 인지적 갈등
주제: 인공지능 브레이크의 한계
활동:
(1단계)학생들이 RC카를 몇 번 서행시키며, RC카 앞의 장애물에 부딪히지 않고 안전히 멈출 수 있는 거리(x), 속도(v) 순서쌍 (x,v) 데이터를 수집한다. 수집할 때마다 교사가 만든(?) AI 알고리즘은 ‘위험’과 ‘안전’을 구분짓는 경계선의 방정식 ax+by+c=0을 스스로 학습한다.
(2단계) 학습을 마친 AI차량을 고속 구간의 안전 데이터 쌍(x,v)에 따른 거리(x), 속도(v)로 출발시킨다. 그러나 분명 안전 거리, 안전 속도로 출발시켰음에도 계속 장애물에 충돌함을 목격하게 한다. 학생들은 다음과 같은 질문을 갖게 된다. “분명히 안전 범위의 거리과 속도로 운행시켰는데 왜 자꾸 충돌할까?”
[2차시] 물리학을 통한 문제 해결
주제: 일-에너지 정리로부터 해답 찾기
활동:
(1단계) 물리법칙 일-에너지 정리(1/2 mv^2 = fd)를 도입한다. 제동거리는 속도(v)가 아니라 속도의 제곱(v^2)에 비례함을 발견한다. 안전/위험 경계선이 왜 직선이 되면 안 되는지 스스로 깨닫는다.
(2단계) 경계선을 수정하려면 x항, v항 뿐 아니라 v^2항도 포함되어야 함을 깨닫는다.
[3차시] 물리 기반 인공지능 설계
주제: 물리학을 통한 경계선 업데이트
활동:
(1단계) 학생들이 경계선 방정식을 ax+bv+cv^2+d=0으로 고친다. 교사가 만든 AI 알고리즘에 다시 데이터를 학습시키면 정교한 경계곡선을 다시 얻는다.
[4차시] 피지컬 AI 구동
주제: 피지컬 AI 재구동
활동:
(1단계) 개선된 AI 모델을 RC카에 다시 이식?하고, 최종 주행 테스트를 한다. 저속이든 고속이든 상관없이 벽 앞에 완벽히 스르륵 멈춰서는 것을 보면 성공이다.
(2단계) 분무기로 도로에 물을 뿌리거나 하는 변주를 주어도 재학습된 AI 알고리즘에 의해 RC카는 무사히 정차함을 확인하며 단순 물리 법칙을 벗어난 AI 학습의 효과를 실감한다.
[AI알고리즘 제작]
(1단계) 가중치 초기화, 경계곡선 식
ax+by+cz+d=0 (a,b,c,d는 랜덤 상수)
(2단계) 실험 데이터를 (x_i,v_i), 그에 따른 충돌 여부를 c_i라 하자. c_i=1이면 충돌, 0이면 비충돌. 가중합 z_i = ax_i + bv_i + cv_i^2 +d를 계산
(3단계) 활성화함수를 시그모이드함수로 하여, 아래 t_i를 계산
t_i = 시그마(z_i) = 1 / (1+e^(-z_i))
(4단계) z_i>0즉 t_i=1이면 위험, z<0 즉 t_i=0이면 안전으로 판단됨.
note. ti는 예측치, ci는 실제치
[AI알고리즘 학습]
(5단계) 시험주행을 하였으나 틀렸을 때, 아래와 같이 계수 업데이트.(0.01은 학습률)
a <- a + 0.01 * (ci – ti) * xi
b <- b + 0.01 * (ci-ti) * vi
이런식으로..
# 1. 초기 미지수(가중치)를 완전히 랜덤한 소수로 설정
import random
a = random.uniform(-1, 1)
b = random.uniform(-1, 1)
c = random.uniform(-1, 1)
d = random.uniform(-1, 1)
learning_rate = 0.01 # 학습 보폭 (eta)
# 수집된 샘플 데이터 세트 (거리, 속도, 속도제곱, 실제정답)
# [x, y, y^2, t]
data_set = [
[5.0, 20.0, 400.0, 1], # 위험했던 순간
[15.0, 5.0, 25.0, 0], # 안전했던 순간
[2.0, 10.0, 100.0, 1], # 위험했던 순간
[30.0, 15.0, 225.0, 0], # 안전했던 순간
]
# 2. 알고리즘 학습 함수 정의
def train_perceptron(data):
global a, b, c, d
# 전체 데이터를 한 번씩 훑는 루프
for sample in data:
x = sample[0]
y = sample[1]
y_square = sample[2]
t = sample[3] # 실제 정답 (1 또는 0)
# [단계 2] 현재 공식으로 위험도 판별값(z) 계산
z = (a * x) + (b * y) + (c * y_square) + d
# 부호에 따른 AI의 예측값(t_hat) 결정
if z > 0:
t_hat = 1 # 위험 예측
else:
t_hat = 0 # 안전 예측
# [단계 3] 오차 계산 (정답 - 예측)
error = t - t_hat
# 오차가 0이 아닐 때만 고등학교 교과서 방식으로 가중치 업데이트
if error != 0:
a = a + learning_rate * error * x
b = b + learning_rate * error * y
c = c + learning_rate * error * y_square
d = d + learning_rate * error * 1
# 3. 이 학습 과정을 1000번 반복하여 최적의 a, b, c, d 수렴값 찾기
for epoch in range(1000):
train_perceptron(data_set)
# 최종 완성된 수학 공식 출력
print(f"완성된 AI 경계선 공식: {a:.2f}x + {b:.2f}y + {c:.2f}y^2 + {d:.2f} = 0")
답글 남기기