머신 러닝 소개

Tensorflow를 활용한 간단한 머신 러닝 프로그램

Posted by Start Bootstrap on July 07, 2019

Introduce To Machine Learning

검색 사이트에 머신 러닝을 검색하면 다양한 용어들[Ex)인공 지능(artificial intelligence), 기계 학습(machine learning), 신경망(neural network) 및 심층 학습(deep learning)]이 나옵니다. 사실 이들은 밀접한 관련이 있습니다. 그래서 이 용어들이 무엇을 의미하는지 파악하고 서로 어떤 연관이 있는지 알아보는 것이 이와 관련된 학습 시작의 첫 번째로 해야 할 일이라고 할 수 있습니다.

기계 학습의 핵심은 표현(representation)과 평가(Evaluation) 그리고 최적화(Optimization)에 있다. 표현은 데이터를 표현할 모델을 선택하는 것입니다. 평가는 본질적으로 어떠한 기준에 따라 한 모델을 다른 모델과 비교하여 판단하거나 더 나은 것을 선호하는 방식입니다. 최적화는 더 나은 평가를 위해 적합한 표현을 찾는 방법 입니다 최적화는 욕심쟁이 검색 같은 조합에 기반하고, 그라디언트 디센트와 같은 제한되지 않은 연속 최적화 및 선형 프로그래밍과 같은 제한된 연속 최적화를 기반으로 할 수 있습니다.

Artificial Intelligence 컴퓨터가 인간의 사고 방식, 즉 지능을 얻을 수 있도록하는 컴퓨터 과학 분야 입니다. 기계 학습 및 심화 학습을 포함하여 이 목표를 달성하기 위한 많은 접근법이 있습니다

Machine Learning 컴퓨터가 명시적으로 프로그래밍 하지 않고 특정 작업을 수행하도록 학습 및 훈련 된 관련 기술(또는 알고리즘) 집합 입니다. 예를 들면 이러한 과정을 통해서 수신한 문자가 스팸인지 아닌지 판단할 수 있게 할 수 있습니다.

Neural Network 기계학습과 인지과학에서 생물학의 신경망(동물의 중추신경계중 특히 뇌)의 신경 세포에서 영감을 얻은 통계학적 학습 방법 입니다. 신경 회로망은 Deep Learning의 방법을 구현하는 기본적인 부분 입니다.

Deep Learning 다중 계층 신경망(이것은 하나 이상의 신경망 또는 인공 뉴런, 노드)을 사용하는 기계 학습의 하위 분야. 종종 "Machine Learning"과 "Deep Learning"은 비슷한 의미로 사용됩니다.

Machine Learning 및 Deep Learning에는 또한 많은 하위 영역, 브런치 및 특별한 기술(subfields, branches, and special techniques)이 있습니다. 이러한 다양성의 주목할 만한 예는 지도 학습(supervised learning)과 비지도 학습(unsupervised learning)의 분리입니다. 간소화하려면? 지도 학습(supervised learning)에서는 컴퓨터를 가르치려는 것을 알고 있습니다. 이 표현은 즉 학습에 목적이 있고 옳은 방향이 있다고 할 수 있습니다. 비지도 학습(unsupervised learning)은 컴퓨터로 하여금 학습할 수 있는 것을 스스로 파악하도록 하는 것입니다 그래서 명확한 정답 혹은 옳은 방향은 없지만 컴퓨터가 스스로 그 길을 찾아야 합니다. 지도 학습(supervised learning)은 가장 일반적인 유형의 Machine Learning 과정입니다.

머신 러닝 시스템은 문제를 해결하는 데 도움이 되는 사전 지식이 없습니다. 그들은 사전 지식없이 이러한 유형의 문제를 해결하는 법을 배웁니다. 예를 들어 지도 학습의 간단한 예시를 생각해보면 x => x * 2라는 함수가 있다고 합시다. 우리는 이 정답을 알고 있지만 컴퓨터에게 정답을 가르쳐 주지 않고 데이터 결과만 적용할 것입니다. TensorFlow를 활용하여 다음와 같은 예시를 만들었습니다. 그리고 결과를 확인해 보시기 바랍니다. 이 간단한 예시는 우리에게 머신 러닝을 학습하는 데 있어서 이해를 도울 수 있다고 생각합니다.

        
                import numpy as np
                import tensorflow as tf

                if __name__ == "__main__":

                    x_value         = np.array([-40, -10, 0, 10, 20, 40,  80],  dtype=int)
                    result_value    = np.array([-80, -20, 0, 20, 40, 80, 160],  dtype=int)

                    l0 = tf.keras.layers.Dense(units=1, input_shape=[1])
                    model = tf.keras.Sequential([l0])

                    model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.1))

                    history = model.fit(x_value, result_value, epochs=500, verbose=False)
                    print("머신 러닝 학습 끝! 100에 대한 결과의 예측은 아래에 있습니다.")

                    print(model.predict([100.0]))
        
    

결과 정리 중....