π± νλ μΈκ³΅μ§λ₯ νμ΅ 1λ¨κ³: κΈ°μ΄ μν λ° μ νλμ
π± νλ μΈκ³΅μ§λ₯ νμ΅ 1λ¨κ³: κΈ°μ΄ μν λ° μ νλμ
π νμ΅ κΈ°κ°: 1~3κ°μ
π― νμ΅ λͺ©ν: AI μκ³ λ¦¬μ¦μ μν μνμ κΈ°μ΄ ν보
π 1. κΈ°μ΄ μνμ νμμ±
μΈκ³΅μ§λ₯κ³Ό λ¨Έμ λ¬λμ λ€λ£¨κΈ° μν΄μλ μνμ κ°λ
μ΄ νμμ
λλ€.
νΉν λ―ΈλΆ, μ νλμ, νλ₯ κ³Ό ν΅κ³λ λ₯λ¬λ λͺ¨λΈκ³Ό μ΅μ ν μκ³ λ¦¬μ¦μ μ΄ν΄νλ λ° μ€μν μν μ ν©λλ€.
μ΄λ² κΈμμλ μΈκ³΅μ§λ₯μ κΈ°μ΄ μν κ°λ
κ³Ό μ€μ΅μ μ€μ¬μΌλ‘ νμ΅ν©λλ€.
π 1-1. λ―ΈλΆκ³Ό μ λΆ
π 1) λ―ΈλΆμ κ°λ κ³Ό νμ©
λ―ΈλΆμ ν¨μμ λ³νμ¨μ ꡬνλ μ°μ°μ
λλ€.
λ₯λ¬λ λͺ¨λΈμ μμ€ ν¨μ μ΅μ νμμ κ²½μ¬νκ°λ²(Gradient Descent)μ ν΅ν΄ κ°μ€μΉλ₯Ό μ
λ°μ΄νΈν λ μ¬μ©λ©λλ€.
μμ:
μμ€ ν¨μ L(w)L(w)λ₯Ό λ―ΈλΆνμ¬ κΈ°μΈκΈ°λ₯Ό ꡬν¨μΌλ‘μ¨ μ΅μκ°μ μ°Ύμ΅λλ€.
dLdw=limβ‘h→0L(w+h)−L(w)h\frac{dL}{dw} = \lim_{h \to 0} \frac{L(w + h) - L(w)}{h}
Python μμ :
import sympy as sp
# λ³μ μ μ
w = sp.symbols('w')
L = w**2 + 3*w + 2
# λ―ΈλΆ κ³μ°
dL_dw = sp.diff(L, w)
print(f"λ―ΈλΆ κ²°κ³Ό: {dL_dw}")
κ²°κ³Ό:
λ―ΈλΆ κ²°κ³Ό: 2*w + 3
π‘ λ―ΈλΆ νμ©:
- κ²½μ¬νκ°λ²(Gradient Descent): κΈ°μΈκΈ°κ° μμλ©΄ μ€λ₯Έμͺ½μΌλ‘ μ΄λ, μμλ©΄ μΌμͺ½μΌλ‘ μ΄λνμ¬ μ΅μ μ νμ
- νμ±ν ν¨μ λ―ΈλΆ: μ κ²½λ§μμ μμ νλ₯Ό ν΅ν΄ μ€μ°¨λ₯Ό μ΅μν
π 2) μ λΆμ κ°λ κ³Ό νμ©
μ λΆμ ν¨μμ λμ΄λ λμ κ°μ ꡬνλ μ°μ°μ
λλ€.
λͺ¨λΈ νμ΅μμ **νλ₯ λ°λ ν¨μ(PDF)**λ₯Ό κ³μ°νκ±°λ, λμ λΆν¬ ν¨μλ₯Ό ꡬν λ μ¬μ©λ©λλ€.
Python μμ :
# μ λΆ κ³μ°
integral = sp.integrate(L, w)
print(f"μ λΆ κ²°κ³Ό: {integral}")
κ²°κ³Ό:
μ λΆ κ²°κ³Ό: w**3/3 + 3*w**2/2 + 2*w
π‘ μ λΆ νμ©:
- νλ₯ λΆν¬ κ³μ°: νλ₯ λ°λ ν¨μ(PDF)μ λμ νλ₯ κ³μ°
- μ κ²½λ§ νμ±ν ν¨μμ λμ κ° κ³μ°: μννΈλ§₯μ€ ν¨μμ νλ₯ λΆν¬ ꡬνκΈ°
π 1-2. μ νλμμ λ²‘ν° μ°μ°
π 1) 벑ν°μ νλ ¬μ κ°λ
벑ν°μ νλ ¬μ λ°μ΄ν°λ₯Ό νννλ κΈ°λ³Έ λ¨μμ λλ€.
- 벑ν°(Vector): ν¬κΈ°μ λ°©ν₯μ κ°μ§ μνμ κ°μ²΄
- νλ ¬(Matrix): 2μ°¨μ λ°°μ΄ ννλ‘ λ°μ΄ν°λ₯Ό ꡬ쑰ν
Python μμ :
import numpy as np
# 벑ν°μ νλ ¬ μ μ
v = np.array([2, 4, 6])
A = np.array([[1, 2], [3, 4]])
# λ²‘ν° μ°μ°
print(f"벑ν°μ κΈΈμ΄: {np.linalg.norm(v)}")
print(f"νλ ¬μ μ μΉ: \n{A.T}")
π‘ 벑ν°μ νλ ¬ νμ©:
- μ κ²½λ§ κ°μ€μΉ νν: κ°μ€μΉλ₯Ό νλ ¬λ‘ νννμ¬ μ°μ° κ°κ²°ν
- νλ ¬ κ³±μ : λͺ¨λΈ μμΈ‘ κ° κ³μ° λ° κ°μ€μΉ μ λ°μ΄νΈ
π 2) νλ ¬ μ°μ°κ³Ό μνλ ¬
μνλ ¬μ νλ ¬ μ°μ°μμ λλμ
μ ν΄λΉνλ©°, μ ν λ°©μ μμ ν΄κ²°ν λ μ μ©ν©λλ€.
μνλ ¬μ΄ μ‘΄μ¬νλ €λ©΄ νλ ¬μ **νλ ¬μ(determinant)**μ΄ 0μ΄ μλμ΄μΌ ν©λλ€.
Python μμ :
# μνλ ¬ ꡬνκΈ°
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)
print(f"νλ ¬μ: {det_A}")
print(f"μνλ ¬: \n{inv_A}")
κ²°κ³Ό:
νλ ¬μ: -2.0000000000000004
μνλ ¬:
[[-2. 1. ]
[ 1.5 -0.5]]
π 1-3. νλ₯ κ³Ό ν΅κ³
π 1) νλ₯ μ΄λ‘ μ κΈ°λ³Έ κ°λ
- νλ₯ λ³μ: μ¬κ±΄μ κ²°κ³Όλ₯Ό μμΉλ‘ ννν λ³μ
- κΈ°λκ°: νλ₯ λΆν¬μ μ€μ¬κ°
- λΆμ°: λ°μ΄ν°μ ν©μ΄μ§ μ λ
Python μμ :
import random
# μ£Όμ¬μ λμ§κΈ°
trials = [random.randint(1, 6) for _ in range(1000)]
mean = np.mean(trials)
variance = np.var(trials)
print(f"κΈ°λκ°: {mean}")
print(f"λΆμ°: {variance}")
π‘ νλ₯ κ°λ νμ©:
- μ κ²½λ§μ λΆνμ€μ± νκ°: μμΈ‘ νλ₯ κ³μ°
- λ² μ΄μ§μ νμ΅: μ¬μ νλ₯ κ³Ό μ¬ν νλ₯ κ³μ°
π 2) ν΅κ³ λΆμ
- νκ· κ³Ό μ€μκ°: λ°μ΄ν°μ μ€μ¬ κ²½ν₯μ νμ
- λΆμ°κ³Ό νμ€νΈμ°¨: λ°μ΄ν°μ λ³λμ± νμ
- μκ΄κ³μ: λ³μ κ°μ κ΄κ³μ±
Python μμ :
data = np.random.randn(100)
mean = np.mean(data)
std_dev = np.std(data)
print(f"νκ· : {mean}, νμ€νΈμ°¨: {std_dev}")
π» μ€μ΅ νλ‘μ νΈ: κ²½μ¬νκ°λ² ꡬν
λͺ©ν: μ΅μ μ μ§μ ꡬνκΈ° (μ ν νκ·)
μ½λ:
# λ°μ΄ν° μμ±
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
# μ΄κΈ°κ°
w = 0.0
b = 0.0
learning_rate = 0.01
# κ²½μ¬νκ°λ²
for epoch in range(100):
y_pred = w * x + b
loss = np.mean((y_pred - y) ** 2)
# λ―ΈλΆ
dw = np.mean(2 * (y_pred - y) * x)
db = np.mean(2 * (y_pred - y))
# μ
λ°μ΄νΈ
w -= learning_rate * dw
b -= learning_rate * db
print(f"μ΅μ w: {w}, μ΅μ b: {b}")
π νμ΅ μ²΄ν¬λ¦¬μ€νΈ:
- λ―ΈλΆκ³Ό μ λΆμ κΈ°λ³Έ κ°λ μ μ΄ν΄νκ³ νμ©ν μ μλ€.
- 벑ν°μ νλ ¬ μ°μ°μ μμ λ‘κ² μνν μ μλ€.
- νλ₯ κ³Ό ν΅κ³μ κΈ°λ³Έ κ°λ μ μ΄ν΄νκ³ κ³μ°ν μ μλ€.
- κ²½μ¬νκ°λ²μ μ§μ ꡬνν μ μλ€.
λ―ΈλΆ, μ λΆ, μ νλμ, νλ₯ κ³Ό ν΅κ³, κ²½μ¬νκ°λ², λ²‘ν° μ°μ°, νλ ¬ μ°μ°, AI κΈ°μ΄ μν, Python μν ꡬν, λ₯λ¬λ κΈ°μ΄