github.com/jonhyuk0922/Tensorflow-Dev/blob/main/Course1_1_A_New_Programming_Paradigm.ipynb
안녕하세요
27년차 진로탐색꾼 조녁입니다!
오늘은 텐서플로우 자격증 과정 첫번째 강좌인
'Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning'
1주차 강의(A New Programming Paradigm) 및 자료를 공부했습니다.
첫번째 읽기자료, Before you begin : Tensorflow 2.0 and this course
요약하자면 이 코스를 만들 때는 텐서플로우 2.0이 아니었다. 그래서 강의 코드가 좀 안 맞을 수 있지만 둘다 호환되는 코드들이 많고, 아닌 부분들은 아래와 같은 코드를 통해 2.0으로 바꿀 수 있는 내용이었습니다.
!pip install tensorflow==2.0.0-alpha0
두번째 영상, Introduction: A conversation with Andrew Ng
이 강의를 만드신 분들(아마 텐서플로우 만드신 분)이 나오셔서 머신러닝과 딥러닝을 통해 각 분야에 새로운 패러다임을 적용할 수 있다는 이야기를 하십니다. 하지만 30만명의 개발자 중에 AI 개발자는 별로 없다. 그러니 이 강의 들어서 텐서플로우를 다루라고 하셨습니다.
세번째 영상, A primer in machine learning
기존 프로그래밍의 패러다임과 머신러닝의 패러다임이 어떻게 다른 지 그림과 예시를 통해 보여줍니다. 아래 그림을 참고하시면서 예시를 이해해보세요.
기존 방식에서는 활동 상태를 정의할 때 걷는 사람과 뛰는 사람, 자전거 타는 사람 등등 에 대한 규칙과 해당 데이터를 주고 답을 도출해냈습니다.
eg) if (speed<4){ status=WALKING;} else (speed <12){ status = RUNNING; } else { status=BIKING; }
위 예시와 같이 활동 상태를 정의할 때 , 사용자가 골프를 친다면 정해진 범주 내에서 정의하기 어려울 것입니다.
반면에 머신러닝 패러다임은 답과 데이터를 넣어준 후, 규칙을 도출해 냅니다.
즉, 걷는 상태, 뛰는 상태, 자전거 타는 상태, 골프치는 상태와 그에 해당하는 값을 넣고 둘 사이에 규칙을 찾아내는 거죠! 이렇게 하게되면 기존과 달리 골프치는 상태도 정의할 수 있습니다.
위 언급한 운동 상태분류 예시와 같은 Computer Vision 시나리오는 규칙 기반 프로그래밍으로 해결하기가 매우 어렵습니다.
대신 컴퓨터가 데이터를 처리하고 일치하는 패턴을 찾는 데 정말 능숙하다는 점을 감안할 때 인식하고 싶은 것과 그 라벨값을 충분히 학습시키면 문제를 해결할 수 있습니다.
네번째 영상, The "Hello World" of neural networks
아래 그림의 X,Y의 규칙을 찾기 위한 코드를 작성해봅니다. neural networks에 있어서 'Hello World' 격인 코드라고 하시네요!
model = keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss = 'mean_squared_error')
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
model.fit(xs, ys, epochs=500)print(model.predict([10.0]))
우리는 위 코드의 답이 19가 나올 것을 예상합니다.
하지만 1) 데이터가 6개밖에 없었고 , 2) 신경망은 양수가 아니기에 도출 값은 19에 근접하지만 19는 아닌 수가 나옵니다.
다섯번째 읽기자료 , From rules to data
머신러닝에서 학습을 진행할 때 충분한 데이터가 필요하다는 것을 시사합니다.
여섯번째 영상, Working through ‘Hello World’ in TensorFlow and Python
Colab 을 이용해서 위 코드를 직접 500 epoch 돌려보고 결과를 확인합니다.(단, tensorflow, numpy, keras는 import해야 합니다.)
아래와 같은 결과값이 나오는데 , 역시 정확히 19가 나오진 않았습니다. 이유는 네번째 강의에 나와있습니다.
일곱번째 읽기자료, Try it for yourself
이후에는 퀴즈를 하나봤는데 내용은 기본적으로 (기존 -> 머신러닝)패러다임의 변화, neural networks가 어떻게 이뤄졌으며 optimizer 와 dense, loss function 이 무슨 기능인 지 정도만 알면 충분히 풀 수 있는 정도로 나옵니다.
과제 : House_Prices_Prediction
여기까지가 총 4주 중에 1주차 강의였구요! 내용이 별로 안되서 산뜻하게 출발할 수 있었습니다.
다만 1,2주차에 비해 3,4주차에서 나오는 NLP 등의 난이도는 확 올라간다고 하니 부지런히 들어놔야겠어요!
알고보니 첫번째 강의의 1~4주차 강의가 있고 이런 강의가 4개 있었다.(그니까 총 4주차가 아니라 16주차임!)
나는 그냥 첫번째 강의가 다 인줄 알고 여유있었다.. 왜이리 쉽지 했는데 역시 .. 공짜는 없구나 싶었다. 그래도 화이팅!