[Machine Learning] NumPy: AI/ML을 위한 핵심 라이브러리
카테고리: Machine Learning
태그: AI data science linear algebra numpy python machine learning
🎯 NumPy: AI/ML의 기초
NumPy(Numerical Python)는 파이썬의 핵심 과학 컴퓨팅 라이브러리로, AI와 머신러닝 분야에서 필수적으로 사용되는 도구 (
근데 Pytorch나 Tensorflow를 사용하게 되면 거의 사용하지 않는 듯하다.그래서 이 포스트는 그냥 참고용으로 남겨둔다.)
1. NumPy의 역할
AI/ML에서의 중요성
- 고성능 수치 계산을 위한 기반 제공
- 효율적인 다차원 배열(텐서) 처리
- 선형 대수학 연산의 최적화된 구현
- 하드웨어 가속(Intel MKL 등)을 통한 성능 향상
실제 사용 사례
- 신경망 구현
- 행렬 연산을 통한 가중치 계산
- 활성화 함수 적용
- 역전파 알고리즘 구현
- 데이터 전처리
- 특성 스케일링
- 차원 축소
- 데이터 정규화
2. NumPy의 핵심 기능
다차원 배열(ndarray)
import numpy as np
# 1차원 배열
arr1d = np.array([1, 2, 3, 4, 5])
# 2차원 배열 (행렬)
arr2d = np.array([[1, 2, 3],
[4, 5, 6]])
# 3차원 배열 (텐서)
arr3d = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
행렬 연산
# 행렬 곱
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B) # 또는 A @ B
# 전치 행렬
D = A.T
# 역행렬
E = np.linalg.inv(A)
3. AI/ML 응용 예제
간단한 신경망 구현
def simple_neural_network(input_data, weights, bias):
# 선형 결합
z = np.dot(input_data, weights) + bias
# 활성화 함수 (시그모이드)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 출력
return sigmoid(z)
# 예제 데이터
X = np.array([[0, 0, 1],
[0, 1, 1],
[1, 0, 1],
[1, 1, 1]])
weights = np.random.random((3, 1))
bias = np.random.random(1)
output = simple_neural_network(X, weights, bias)
데이터 전처리 예제
# 특성 스케일링 (Min-Max 정규화)
def min_max_scaling(X):
return (X - X.min()) / (X.max() - X.min())
# 표준화 (Z-score 정규화)
def standardization(X):
return (X - X.mean()) / X.std()
# 예제 데이터
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
scaled_data = min_max_scaling(data)
standardized_data = standardization(data)
4. 성능 최적화
Intel MKL 활용
- NumPy는 Intel MKL과 연동되어 최적화된 성능 제공
- 행렬 연산, FFT 등의 계산이 하드웨어 수준에서 가속됨
- 대규모 데이터셋 처리 시 큰 성능 차이 발생
# 대규모 행렬 연산 예제
large_matrix1 = np.random.random((1000, 1000))
large_matrix2 = np.random.random((1000, 1000))
# MKL 최적화된 행렬 곱
result = np.dot(large_matrix1, large_matrix2)
5. 실전 팁
메모리 효율성
- 적절한 데이터 타입 선택
# float64 대신 float32 사용 arr = np.array([1, 2, 3], dtype=np.float32)
- 뷰(View) 활용
# 복사 대신 뷰 사용 arr_view = arr[:] # 메모리 효율적 arr_copy = arr.copy() # 새로운 메모리 할당
벡터화 연산
- 루프 대신 벡터화된 연산 사용
# Bad for i in range(len(arr)): arr[i] = arr[i] * 2 # Good arr = arr * 2 # 벡터화된 연산
🎯 결론
NumPy는 AI/ML 분야에서 필수적인 도구이며, 효율적인 수치 계산과 데이터 처리를 가능하게 해준다. 고수준 프레임워크들의 기반이 되는 이 라이브러리를 잘 이해하고 활용하는 것이 중요하다.
💡 Tip: NumPy를 효과적으로 사용하기 위해서는 선형 대수학의 기본 개념을 이해하고 있어야 한다.