평소처럼 패스트캠퍼스 강의들을 보다가, 4차 산업혁명과 기술 트렌드를 배경으로 '딥러닝/인공지능'에 흥미가 생겼다.
알파고는 인공지능 붐을 일으키는데 신호탄이 됐고, 이후 대한민국 정부나 기업 및 IT업계 엔지니어 등 많은 국민적 관심사가 인공지능 기술이 됐다. 그리하여 인공신경망을 기반으로 한 딥러닝(머신러닝의 일종)이 각광받으면서, 딥러닝 인공지능 개발자에 대한 연봉도 올라가고, 그렇게 유용한 거 이참에 나도 한 번 배워보고싶다는 마음이 생겨 '한 번에 끝내는 딥러닝/인공지능 초격차 패키지' 강의를 구입했다. 그 후 패스트캠퍼스 전액 환급 챌린지의 존재를 알게 되었고, 주저없이 바로 참여했다.
패스트캠퍼스 전액 환급 챌린지(갓생살기 30일 미션)에 등록하고, 11월 1일부터 꾸준히 하루에 1강의씩 수강했다. (빼먹을 뻔한 적도 몇 번 있었지만, 감사하게도 하루도 빠짐없이 꾸준함을 완성할 수 있었다.) 딥러닝/인공지능 강의를 30일동안 꾸준히 수강하며 느낀 것이 많은데, 그것들 중 대표적으로 '파이썬의 편리함'과 '딥러닝의 진입장벽'을 고르겠다. (그 외에도 패스트캠퍼스 강의의 이점과 단점(보완했으면 하는 점), 앞으로의 진로와 계획 등에 대해 깊게 생각해봤다.)
먼저 '파이썬의 편리함'을 느꼈다. 사실 전액 환급 챌린지를 30일동안 하면서, 진도를 크게 많이 나가지는 못했다. 30일 대부분을 파이썬 기초 다지기에 사용하였다. jupyter notebook을 처음으로 알게 되고, 파이썬에서의 변수(정수형과 실수형)와 문자열(string)과 컬렉션 타입(list,tuple,dict,set)을 알게 되고, 조건문(if, elif, else), 반복문(for, while)을 써보고, 함수를 이해하고, 기본 파라미터와 키워드 파라미터, 변수의 스코프에 대해 이해하게 되었다. 또한 lambda 함수를 알게 되고, 모듈의 사용법 및 클래스와 오브젝트, 클래스 상속과 연산자 재정의 등을 알게 되었다. 마지막으로 정규식까지 깊게 알 수 있었다. 파이썬에 대해 꽤 깊게 설명해주어서, 강의를 들으면서 학습하는 느낌을 많이 받았다. 그리고 평소에 C언어와 자바만으로 코딩하던 학생으로써 파이썬을 접하며 많은 것들이 쉬워졌다고 생각했다. 중괄호가 아닌 들여쓰기, 여러 유용한 내장함수와 모듈들. 코딩테스트 문제들을 풀 때도 C언어로는 40~50줄 넘어가던 것이 파이썬 4줄로 완성되는 기적도 경험했다. 역시 인터프리터 언어는 편하구나 라는 것을 느꼈고, 배우면서 흥미도 많이 느꼈다.
다음으로 '딥러닝의 진입장벽'이었다. 이 강의를 듣기 전에 '1년 안에 AI 빅데이터 전문가 되는 법', 'AI 최강의 수업', '이것이 인공지능이다'와 같은 서적을 통하여 기본 지식을 쌓고 철저히 무장해서 딥러닝 공부를 시작했음에도 불구하고, 아직 모르는 내용이 엄청 많아 벽을 느꼈다. 이 내용들을 숙지하고 적용해나가다 보면 언젠가는 익숙해지겠지만, 지금 현재로는 어려운 용어들과 개념들이 막막하게만 느껴졌다. 그리고 확실히 고등학교 수학 과정을 철저히 공부해야겠다는 생각이 들었다. AI를 구현하기 위해 여러 수학 개념들이 등장하면서(AI는 사람을 모방하는 과정을 거쳐야 하기 때문), 현재의 한계를 느꼈고 더 열심히 수학 공부를 해야겠다고 생각했다.
나는 패스트캠퍼스의 <한 번에 끝내는 딥러닝/인공지능 초격차 패키지 Online.> 강의를 파이썬기초프로그래밍, 환경설정, 데이터타입과컬렉션, 조건문과반복문, 함수이해및활용, 파이썬모듈, 클래스와인스턴스, 정규표현식, 딥러닝네트워크의연산, Intro.totheCourse, Introduction 강의의 과정을 거쳐 학습하였고, 앞으로 CoLaboratory, ParametericFunctionsandDatasets, Artificial_Neurons, Affine_Functions, Artificial_Neurons, DenseLayers, Dense_Layers ,The_First_Dense_Layer., Generalized_Dense_Layers., Minibatches_in_Dense_Layers., Dense_Layers, Cascaded_Dense_Layers, Model_Implementation_with_Dense_Layers SigmoidandSoftmax, Logit_and_Sigmoid., _Softmax_Layer, Binary_Classifiers, Multiclass_Classifiers LossFunctions, Mean_Squared_Error., Binary_Cross_Entropy., Categorical_Cross_Entropy, Toy_Datasets_for_Regression_and_Binary_Classification, Toy_Datasets_for_Multiclass_Classification., MSE_and_BCE, SCCE_and_CCE 등의 과정을 통해 딥러닝의 기초를 다질 것이다. 그 후에도 JacobianMatrix와 Backpropagation, 기초수학(집합, 기초 방정식, 함수, 그래프, 수열, 극한과 연속성, 미분, 편미분, 적분, 벡터와 연산, 행렬과 연산, 선형변환, 연립방정식, 벡터공간, 직교성, 행렬, 확률론, 확률, 확률변수, 기댓값, 난수분포, 베이지안 추론, GaussianApproximations, 공분산과 상관계수, 공분산 행렬, 연쇄법칙, 기울기, 벡터 함수와 자코비안, 벡터 연쇄법칙, 선형 회귀, 로지스틱 희귀공식, 정보 엔트로피, 평균상호정보와 엔트로피, 콜백-라이블러 발산 등), 인공지능에 대한 이해, 딥러닝 개발 준비, 딥러닝 대표 프레임워크(텐서플로우, 케라스, 파이토치) 등을 익힐 것이고, 딥러닝 기초 알고리즘 및 최신 트렌드 알고리즘을 학습할 것이다. 마지막으로 이미지 처리 실습, 동영상 처리 실습, 자연어 처리 실습-챗봇 만들기 등을 통해 전체적인 딥러닝 공부를 시작할 것이다.
이 강의를 듣기 전에는 백엔드 공부(Node.js와 Express, MongoDB, MySQL)를 하면서 막연하게 인공지능 개발을 꿈꿔왔는데, 이 강의의 일부를 듣고 나니 조금이라도 방향성이 잡히는 것 같아 뿌듯하고, 동기부여된다. 혹시 AI 개발자를 막연하게 꿈꾸는 다른 후배들이나 동료들에게도 적극 추천해주고 싶은 강의이다. 아무것도 모르는 상태에서 서적 및 논문으로 공부하는 것보다 훨씬 빨리 기본기를 다질 수 있고, 앞으로 더 많이, 더 빨리 나아갈 수 있다는 것이 이 강의의 이점인 것 같다. 나 또한 이 강의를 보면서 지름길에 대한 길로 가기 위해 필요한 안내자라고 느꼈고, 앞으로 나아갈 길이 꽤 맑아졌다고 느꼈기 때문이다.
아래는 파이썬을 공부하면서 배워본 파이썬 알고리즘 코드(결과물)들이다.
def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
print(is_prime(7))
def GCD(a, b):
if b == 0:
return a
else:
return GCD(b, a % b)
def LCM(a, b):
return (a * b) / GCD(a, b)
print(GCD(10, 12))
print(LCM(10, 12))
for i in range(90, 330*12, 180):
h=int(i/330)
m=int(i/5.5 - 60*h)
print('%002d:%002d' % (h, m));
def dfs(v):
visited[v] = 1 # true
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
dfs(i)
# 인접행렬
graph = [
[],
[2, 3, 8],
[1, 7],
[1, 4, 5],
[3, 5],
[3, 4],
[7],
[2, 6, 8],
[1, 7]
]
visited = [0] * 9
dfs(1)
msg = list(input())
stack = []
for i in range(0, len(msg)):
if msg[i].isdigit():
for j in range(0, int(msg[i])):
print(stack.pop(), end='')
else:
stack.append(msg[i])
# 물 구덩이 수 구하기, 얼음 얼려 먹기
# 4 5
# 00110
# 00011
# 11111
# 00000
# 출력
# 3
# 첫 번째 줄에 땅 크기 N, M 1<=N M<=1000
# 두 번째 줄에 N+1번째 줄까지 땅에 대한 표시이다.
# 0은 물 구덩이, 1은 밟아도 무너지지 않는다.
# 전체 땅 속에서 물 구덩이의 개수를 출력한다.
n, m = map(int, input().split())
graph = []
for i in range(n):
graph.append(list(map(int,input())))
def puddle(x,y): # 물웅덩이 갯수 체크
if x<=-1 or x>=n or y<=-1 or y >= m:
return False
if graph[x][y] ==0: # 0, 0
graph[x][y] = 1
puddle(x - 1, y) #puddle(-1,0)
puddle(x, y - 1) #puddle(0,-1)
puddle(x + 1, y) #puddle(1,0)
puddle(x, y + 1) #puddle(0,1)
return True
else:
return False
cnt=0 # 물웅덩이 개수
for i in range(n):
for j in range(m):
if puddle(i, j) == True:
cnt +=1
print(cnt)
#입력
#-1 1 3 -2 2
#출력
#-1 -2 1 3 2
n = list(map(int, input().split()))
sn = []
for i in range(len(n)):
if(n[i]<0):
sn.append(n[i])
for i in range(len(n)):
if(n[i]>0):
sn.append(n[i])
print(*sn)
#번호가 적힌 N개의 공을 바구니에 넣고 K개 만큼 빼기를 반복할 것이다.
# 이 때 마지막에 바구니에 남은 공의 번호를 출력하시오.
# 단 바구니의 깊이는 10000미만이다.
#첫 줄에는 총 횟수 n을 입력받는다
#총 횟수 n만큼 다음 1번, 2번 명령 2줄이 반복된다.
#1번 바구니에 넣을 N개의 공 번호를 입력받는다.
#2번 바구니에서 뺄 공의 숫자를 입력받는다.
#입력
#2
#1 2 3
#2
#2 3 4 5
#1
#출력
# 1 2 3 4
stack=[]
n = int(input())
for i in range(n):
stack+=list(map(int, input().split()))
b=int(input())
for j in range(b):
stack.pop()
print(*stack)
앞으로 AI(딥러닝) 관련 공부를 열심히 해서 Google본사의 AI 개발자가 될 것이다! 앞으로 어떤 벽에 마주치더라도 주저말고 깨나가자. 앞으로 갈 길이 멀어도, 한 걸음 한 걸음 다가가면 꿈은 이루어질 것이다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #딥러닝강의 #한 번에 끝내는 딥러닝/인공지능 초격차 패키지 Online.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.