반응형

키워드, 딥러닝, AI, 인공지능. 개발자, 프로그래머

25년을 개발자(프로그래머)로 살아왔다.

비주얼베이직으로 시작했고 델파이와 파워빌더로 다양한 산업군의 프로젝트에 참여했다.

2005년쯤 시대에 맞게 자바(java)로 전향했고 요즘은 자바스크립트에 빠져있다.

지금 시대는 인공지능(AI)을 활용한 프로그램들이 넘쳐나고 있다.

chatGPT는 개발자의 일자리까지 위협한다는 뉴스도 봤다.

일전에 파이썬을 공부하고 포스팅했고 마침 인공지능의 시작이라 할 수 있는 딥러닝을 접하게 되었다.

내 인공지능 이야기는 초등학교에서 시작되었다.

 

초등시절 컴퓨터

나는 초등학교 5학년 친구 집에서 실물 컴퓨터를 처음 봤다.

테이프레코더가 컴퓨터 옆에 있었다.

Chris Whytehead, Chris's Acorns – CC-BY-SA-3.0, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons

위 사진과 비슷한 테이프를 사용하는 저장장치였다.
[출처. Chris Whytehead, Chris's Acorns – CC-BY-SA-3.0, CC BY-SA 3.
0
<https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons]

지금 같은 인터넷 시대가 아니었기에 가정에서 초딩이 컴퓨터로 할 수 있는 것은 게임밖에 없었다.

엄마를 졸라서 컴퓨터 학원에 등록했다.

컴퓨터로 로봇이라도 만들 기세였다.

학원에 등록해서 BASIC을 배웠다.

강사샘이 알려준 대로 코딩을 했지만 오류도 많았고 독수리 타법으로 시간이 많이 걸렸다.

재미도 없고 지루했다.

for문, if문을 배웠는데 이걸로 뭘 만들 수 있을까? 라는 이해하기 어려운 상황이 되었다.

* 모양이 삼각형으로 나오게 출력하기....그래서 어쩌라고?

*
**
***
****

이걸로 어떻게 로봇을 만들지?

결국 한 달 다니고 그만두었다.

지금 생각해 보면 코딩 학원의 큰 문제점 중 하나가 이론만 가르치고 동기 부여는 없다는 것이다.

쉽게 확인하는 방법은 이론을 배워서 실습을 하고 난 뒤

그래서? 뭐 어쩌라고? 이걸로 뭐 하는 건데?

라는 생각이 드는 경우다.

 

컴맹 대학생 개발자로 첫 발

스타크래프트를 혼자 실행 못했던 컴맹 대학생이 나였다.

우연히 프로그램 사업을 하는 친구를 만났다.

팬티엄2에 64메가 램 그리고 6.4기가 하드디스면 최고 사양이었던 시절이었다.

html을 시작으로 홈페이지 개발자로 첫 발을 내디뎠다.

병아리 수준의 초초초짜 개발자였기에 C로 만든 cgi는 외계어로 보였다.

친구 사무실에 개발자들을 만났다.

VC++, 델파이 등으로 개발을 하는데 정말 멋져 보였다.

사진: Unsplash 의 Sigmund

나도 개발자(프로그래머)가 되겠다고 결심을 굳혔다.

그리고 일반선택으로 전산통계학과의 프로그래밍언어 강의를 신청했다.

수업을 듣는데 배열과 집합을 이용해서 프로그램을 하는 듯 보였다.

프로그래밍 언어는 Lisp이었다.

당시 트렌드도 아니고 내가 공부하는 언어와 너무 달랐다.

도대체 이런 이상한 프로그래밍 언어는 어디에 쓰는 거야?

찾아보니 인공지능에 활용한다고 한다. 헐~

 

인공지능(AI) 프로그래머로 첫 발

25년 동안 시대에 맞는 프로그램 기술을 배우고 현장에서 개발자로 살았다.

영화 속 인공지능인 터미네이터와 스카이넷을 보고 인공지능(AI) 개발자의 꿈은 유지되었다.

기회가 된다면 꼭 도전해보고 싶었다.

현실은 업무 프로그래머였지만...

어느 날 회사에서 도서 지원이 있다고 해서 인터넷 서점을 서칭 하다가 멋진 책을 발견했다.

사진: Unsplash 의 Growtika

딥러닝.

인공지능(AI)을 위한 기술이었다.

머신러닝, 딥러닝, 신경망

낯선 단어들이다.

하지만 인공지능(AI) 개발자라면 필수가 아닐까?

2019년 딥러닝 책을 시리즈로 구매했다.

앞에 몇 페이지를 보는데 파이썬(python)을 활용했다.

그래서 파이썬(python) 책도 구매했다.

우선 파이썬부터 시작했고 포스팅했다.

2020.09.28 - [Software/Python(파이썬)] - [HOW]파이썬(Python) 특징에 대해 알아봅니다. -왕초보 시작

 

[HOW]파이썬(Python) 특징에 대해 알아봅니다. -왕초보 시작

안녕하세요. 신기한 연구소입니다. 정말 오랜 시간 자바(JAVA) 개발자로 지내왔는데 새로운 공부가 하고 싶은 마음에 파이썬(Python)을 선택하게 되었네요. 마침 잠깐 쉬는 기간이라 딱 좋은 시기입

tiboy.tistory.com

 

2021년 이제는 인공지능(AI) 시대가 온 것 같다.

다양한 앱들이 나타나고 점점 확산되는 분위기였다.

파이썬도 익혔기에 책장에 묵혀 둔 딥러닝 책을 꺼냈다.

그리고 공부를 시작했다.

관심 분야라 재미있게 읽었다.

배열, 행렬 그리고 미분이 나온다.

딥러닝을 공부하는데 수학이 필요한 것이다.

다행히 대학 때 미적분을 배웠기에 어렵지 않게 읽었다.

프로젝트와 병행해서 공부를 했다.

그러던 어느 날 협력업체 직원과 대화를 했는데 인공지능(AI)에 대한 이야기가 나왔다.

요즘 딥러닝 공부 중이라 하니 개발자는 굳이 딥러닝 공부할 필요가 없다고 한다.

그 이유는 구글 등에서 나오는 API를 활용하면 되기 때문이란다.

굳이 수학도 나오는 어려운 딥러닝을 공부할 필요 없고 그것을 활용해서 만든 API만 잘 사용하면 된단다.

사진: Unsplash 의 Antoine Dautry

사실 틀린 말은 아니다.

사업하는 입장에서 사업적인 접근만 하면 되기 때문이다.

굳이 연구 개발하는 개발자 기준으로 어렵게 공부할 필요는 없을 수 있다.

 

제대로 다시 딥러닝 시작하기

나는 개발자다.

나는 프로그래머다.

기본부터 충실하게 익히고 이해해야 API도 잘 활용할 수 있다.

지금 내 책상 독서대엔 딥러닝 책이 펼쳐져 있다.

나처럼 인공지능(AI) 프로그래머가 되고 싶고 딥러닝을 시작한 개발자들이 있을 것이다.

머신러닝, 딥러닝, 신경망부터퍼셉트론, 가중치, 편향, 계단 함수, 시그모이드 함수, ReLU 함수 등 처음 보는 용어들이 많다.

공부만이 답이다.

사진: Unsplash 의 Jonathan Kemper

열심히 준비해서 학습을 해야 기회가 와도 잡을 수 있다.

이 포스팅을 시작으로 매일 스터디하고 정리해서 글을 쓸 계획이다.

혹시 딥러닝이나 인공지능 개발자가 되고 싶은데 용어나 수학의 어려움 때문에 고민 중이라면자주 방문하길 바란다.

누구나 이해할 수 있을 정도로 쉽게 풀어서 정리하는 것도 목표 중 하나이기 때문이다.

인공지능(AI) 전문 프로그래머가 되기 위해 이제 첫 발을 강하게 차 올려본다.

 

 

반응형
반응형

안녕하세요. 신기한 연구소입니다.

카테고리를 보면 Software>Python(파이썬)에 파이썬 프로그래밍 포스팅을 예전에 올렸는데 갑자기 왜 파이썬일까요?

2020.09.28 - [Software/Python(파이썬)] - 파이썬(Python) 처음 시작하기 앞서...

 

파이썬(Python) 처음 시작하기 앞서...

안녕하세요. 신기한 연구소입니다. 파이썬(Python)이 존재하고 유명하다는 건 오래전 알았지만 최근까지 자바(Java)로 개발을 해 왔기에 접할 기회가 없었습니다. 공부하기 위해 책도 몇 권 사뒀지

tiboy.tistory.com

 

20년 9월 28일부터 시작해서 25개의 글을 포스팅했었네요.

20년 도면 시간이 정말 많아서 아마 집중해서 스터디하고 포스팅했던 기억이 있습니다.

대학 시절부터 Lisp 강의를 듣고 인공지능에 대한 환상 같은 것이 있었는데 21년도에 우연히 딥러닝 책을 보게 되었고 인공지능의 재미에 슬슬 빠져들기 시작했습니다.

수학 내용이 포함되어 있지만 나름 대학에서 미적분학 A+였던지라 재미있게 읽게 되었습니다.

20년이 훌쩍 지났지만 아직은 수학에 즐거움이 있고 인공지능이 점점 발전하고 필요성을 느끼고 있기에 나이를 떠나 올해는 인공지능에 올인해 볼 계획을 세웠습니다.

그전에 인공지능을 스터디하려면 머신러닝과 딥러닝을 스터디해야 하는데 보통 파이썬(python)으로 프로그래밍하거나 관련 라이브러리가 있기에 다시 복습하는 의미로 간단하게 인공지능을 위한 파이썬(python)을 정리하고자 이 포스팅을 시작해 봅니다.

내년에는 나름 인공지능 전문가가 되길 희망하면서 올해 열심히 달려보겠습니다.

아래 테스트 소스는 VSCode에서 파이썬을 설치 후 실행한 결과입니다.

 

1. 파이썬 숫자(Number)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
print(1+2)
print(10-5)
print(4*5)
print(8/2)
print(8%5)
print(8//5)
print(8/5)
print(4+4*4)
print((4+4)*4)
print(2**4)
 
first = 5
second = 10
print(first + second)
 
print(2+3j)
cs

1번 라인은 단순한 연산입니다. 1+2는 3이므로 3이 출력됩니다.

2번 라인은 빼기 연산입니다. 5가 출력됩니다.

3번 라인은 곱하기 연산입니다. 20이 출력됩니다.

4번 라인은 나누기입니다.  4.0이 출력됩니다.

5번 라인은 나머지를 구합니다. 3이 출력됩니다.

6번 라인은 몫을 구합니다. 1이 출력됩니다.

7번 라인은 소수점을 출력합니다. 1.6이 출력됩니다.

8번 라인은 연산자 우선순위로 4*4를 먼저 계산하고 4를 더합니다. 20이 출력됩니다.

9번 라인은 괄호를 먼저 계산합니다. 32가 출력됩니다.

10번 라인은 거듭제곱으로 2의 4제곱으로 16이 출력됩니다.

12, 13라인은 변수에 숫자 5, 10을 할당했습니다.

14번 라인은 두 변수를 더합니다. 15가 출력됩니다.

16번 라인은 복소수를 나타내며 2+3j가 출력됩니다. j가 복소수를 의미합니다.

 

2. 파이썬 문자(Text)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
print('my text')
print("don't")
print('don\'t')
 
print('D:\myproj\node')
print(r'D:\myproj\node')
 
print("""
      my name
      is
      tiboy
      """)
 
print('hi' * 3 + ' jenny')
print('hi' ' jenny')
 
data = ('Hello my friends.'
        ' Goodbye buddy')
print(data)
 
name = 'Tom'
 
print('hi~!' + name)
 
longText = "abcdefghijklmn"
 
print(longText[0])
print(longText[-1])
print(longText[0:2])
print(longText[1:2])
print(longText[1:])
print(longText[:2])
print(longText[0:50])
print(longText[40:50])
 
#longText[0] = 'A'
print(longText[0])
 
print(len(longText))
cs

1번 라인은 my text가 출력됩니다.

2번 라인은 don't가 출력됩니다.

3번 라인은 \를 사용해서 ' ' 내부에 '를 출력하게 했습니다. don't가 출력됩니다.

5번 라인은 D:\myproj이 첫 줄에 출력되고 \n때문에 다음줄에 ode가 출력됩니다.

6번 라인은 텍스트 앞에 r을 붙여서 \n의 기능이 작동되지 않게 해서 D:\myproj\node로 출력됩니다.

8번~12번 라인은 더블 세 개 """를 이용해서 줄 바꿈 그대로 출력하게 할 수 있습니다.

14번 라인은 hi*3으로 hi가 세 번 출력되고 jenny가 그 뒤로 붙습니다.  hihihi jenny

15번 라인은 hi jenny가 출력됩니다.

17번~19번 라인은 data에 텍스트를 할당하고 Hello my friends. Goodbye buddy로 출력됩니다.

21번 라인은 name에 Tom을 할당했습니다.

23번 라인은 hi~!에 Tom을 붙여 출력합니다.

25번 라인은 longText에 abcdefghijklmn을 할당합니다.

27번 라인은 0번째 글자 a가 출력됩니다.

28번 라인은 -1번째로 뒤에서 첫 번째 글자 n이 출력됩니다.

29번 라인은 [0:2]로 인덱스 값이기에 첫 글자 0부터 3번째 2 이전까지를 출력합니다. ab가 출력됩니다.

30번 라인은 [1:2]로 두 번째 값 b만 출력됩니다.

31번 라인은 [1:]로 1 이후로 쭉 출력합니다. a가 빠진 bcdefghijklmn이 출력됩니다.

32번 라인은 [:2]로 3번째 앞까지 출력하기에 ab가 출력합니다.

33번 라인은 [0:50]인데 50까지 없기에 abcdefghijklmn가 출력됩니다.

34번 라인은 [40:50]으로 해당 문자열이 존재하지 않기에 빈값이 출력됩니다.

36번 라인은 #으로 주석처리를 한 이유는 문자열을 [] 사용해서 변경할 수 없습니다. 재할당을 해야 합니다.

39번 라인은 len을 사용해서 문자열 길이를 출력합니다. 14가 출력됩니다.

 

3. 파이썬 리스트(List) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
num = [2,4,6,8]
print(num)
 
print(num[0+ num[1])
print(num[-2])
print(num[-3:])
print(num[:-3])
print(num[:])
 
num = num + [10]
 
print(num)
 
num = num + [1215]
 
print(num)
 
print(num[6])
num[6=14
 
print(num[6])
 
num.append(16)
print(num)
 
text = ['a','b','c','d','e']
print(text)
text[2:4= ['C''D']
print(text)
 
text[2:4= []
print(text)
 
text[:] = []
print(text)
 
db1 = ['a','b','c']
db2 = ['d','e']
db3 = [db1, db2]
 
print(db3)
print(db3[1][1])
cs

리스트는 대괄호 사이에 쉼표로 값을 구분합니다.

다른 타입의 값들을 가질 수 있습니다.

1번 라인은 num 변수에 값을 할당해서 리스트를 만들었습니다.

2번 라인은 [2, 4, 6, 8]을 출력합니다.

4번 라인은 0번째와 1번째 인덱스에 해당하는 값을 더해서 6을 출력합니다.

5번 라인은 인덱스 -2로 리스트 뒤에서 2번째 값인 6을 출력합니다.

6번 라인은 [-3:]로 뒤에서 세 번째 인덱스 값부터 출력하기에 [4, 6, 8]이 출력됩니다.

7번 라인은 [:-3]으로 처음부터 뒤에서 세번째 인덱스까지 출력하기에 [2]가 출력됩니다.

8번 라인은 [:]로 모두 출력합니다. [2, 4, 6, 8]

10번 라인은 num 리스트에 [10]을 더합니다.

12번 라인은 [10]을 더한 [2, 4, 6, 8, 10]을 출력합니다.

14번 라인은 num 리스트에 [12, 15]를 더합니다.

16번 라인은 [12, 15]를 더한 [2, 4, 6, 8, 10, 12, 15]가 출력됩니다.

18번 라인은 6번째 인덱스 값인 15를 출력합니다.

19번 라인은 num 리스트의 6번째 인덱스에 14를 재할당 합니다.

21번 라인은 이제 6번째 인덱스의 값이 15가 아닌 14로 바뀌어 출력됩니다.

 23번 라인은 num 리스트에 append 함수를 사용해서 16을 추가했습니다.

24번 라인은 [2, 4, 6, 8, 10, 12, 14, 16]를 출력합니다.

26번 라인은 text 변수에 문자 값으로 리스트를 만들었습니다.

27번 라인은 ['a', 'b', 'c', 'd', 'e']를 출력합니다.

28번 라인은 [2:4]에 'C', 'D'로 재할당했습니다.

29번 라인은 ['a', 'b', 'C', 'D', 'e']로 재할당 값으로 바뀌어 출력되었습니다.

31번 라인은 [2:4]에 []로 빈 값을 할당했습니다.

32번 라인은 [2:4] 값이 빠진 ['a', 'b', 'e']이 출력되었습니다.

34번 라인은 []으로 전체 값을 비웠습니다.

35번 라인은 []을 출력합니다.

37번~38번 라인에 db1, db2 리스트가 할당되었습니다.

39번 라인은 db3에 db1, db2값이 할당되었습니다.

41번 라인은 db3에 db1, db2가 할당된 값이 출력됩니다. [['a', 'b', 'c'], ['d', 'e']]

42번 라인은 [1][1]로 마치 2중 배열 출력을 연상케 합니다. e가 출력됩니다.

 

이번 포스팅은 숫자, 문자, 리스트를 다루는 방법을 아주 간단하게 복습해 봤습니다.

다음 포스팅은 파이썬 연산자를 복습해 보겠습니다.

즐코딩 하세요.

미래의 인공지능 전문가 신기한 연구소였습니다.

 

 

반응형