Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python TensorFlow에서 선형 회귀(Linear Regression)가 작동하는 방식

TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 프레임워크로, Python과 함께 사용하여 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업을 수행할 수 있으며, 연구 목적과 실제 프로덕션 환경 모두에서 활용됩니다. 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 갖추고 있는데, 이는 내부적으로 NumPy와 다차원 배열을 사용하기 때문입니다. 이러한 다차원 배열은 '텐서(tensor)'라고도 불립니다.

TensorFlow는 딥 신경망 작업을 지원하며, 뛰어난 확장성을 자랑합니다. 또한 널리 사용되는 다양한 데이터셋을 기본으로 제공하고, GPU 연산을 활용하며 리소스 관리를 자동화합니다. 수많은 머신러닝 라이브러리를 포함하고 있으며, 풍부한 문서와 커뮤니티 지원을 받을 수 있습니다. 이 프레임워크는 딥 신경망 모델을 실행하고 학습시켜, 해당 데이터셋의 특성을 예측하는 애플리케이션을 만들 수 있습니다.

TensorFlow 설치

'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)란?

텐서는 TensorFlow에서 사용되는 데이터 구조입니다. 데이터 흐름 그래프(Data Flow Graph)라고 불리는 플로우 다이어그램에서 엣지(edge)를 연결하는 역할을 합니다. 텐서는 본질적으로 다차원 배열 또는 리스트에 해당합니다.

예제 코드

def linear_reg(x):
    return A * x + b

def mean_square_error(y_pred, y_true):
    return tf.reduce_mean(tf.square(y_pred - y_true))

optimizer = tf.optimizers.SGD(learning_rate)

def run_optimization():
    with tf.GradientTape() as g:
        pred = linear_reg(X)
        loss = mean_square_error(pred, Y)
    gradients = g.gradient(loss, [A, b])
    optimizer.apply_gradients(zip(gradients, [A, b]))

코드 출처: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/tensorflow_v2/notebooks/2_BasicModels/linear_regression.ipynb

실행 결과

정의된 선형 회귀 함수가 데이터에 대해 호출됩니다.
최적의 데이터 포인트가 계산되면 평균 제곱 오차(MSE) 함수가 계산됩니다.
경사 하강법(Gradient Descent)을 사용하여 최적의 가중치를 찾아냅니다.
이 값들이 콘솔에 출력됩니다.

코드 설명

  • '가중치(weight)'와 '편향(bias)' 값은 무작위로 초기화됩니다. 학습이 완료되면 이 값들은 최적값으로 갱신됩니다.

  • 선형 방정식의 일반적인 형태는 'Ax + b'이며, 여기서 'A'는 가중치, 'b'는 편향 값을 의미합니다.

  • 평균 제곱 오차(Mean Square Error)를 계산하는 함수를 정의합니다.

  • 확률적 경사 하강법(SGD) 옵티마이저 역시 정의합니다.

  • 그래디언트를 계산하고 가중치와 편향 값을 갱신하는 최적화 함수를 정의합니다.

  • 지정된 스텝 수만큼 데이터를 반복 학습시킵니다.