궁금한게 많은 열아홉
article thumbnail
🚨 본 글은 필자가 딥러닝을 시작하기전 배경 및 선수 지식에 대해 정리 한 글입니다 :)

 
이전 글
2023.03.14 - [분류 전체보기] - [AI] 사람의 시대가 끝나는 날이 올까?
 
전글에서도 언급했지만, chatGPT의 등장으로 사람들은 AI, 머신 러닝, 딥러닝 등 관심도가 높아졌다.
내가 이를 체감 할 수 있었던 건 인터넷과 컴퓨터에 대해 잘 모르던 우리 엄마도 뉴스에 chatGPT가 나온 걸 보시고 어떻게 사용하는지 물어보셨기 때문이었다. 
 
딥러닝은 현재 다양한 분야에서 혁신적인 결과를 만들어 내고 있다. 특히 음성인식, 이미지 분류, 자연어 처리 등에서 최고의 성능을 보여주고 있다. 아마 곧 딥러닝이 인간의 지능에 가까운 수준으로 발전할 것으로 보인다.
 
그렇다면, 이를 이용해 돈을 벌고 싶어하는 사람들도 증가 할 것이다. 아래에는 stackoverflow survey 2022의 결과인데, 개발 직군에 따른 연봉 그래프이다. y = x 축 기준으로 위에 있으면, 상위. 아래에 있으면 하위라고 보면된다.

사진을 보면 알겠지만, 딥러닝과 관련된 직군은 수요가 적고, 상위권에 속한다. 즉, 지금 시작하면 노력 대비 많은 임금을 얻을 수 있다는 것이다.
하지만, 이러힌 인공지능 분야는 상당한 고지식을 요구한다. 또 자료가 많이 없어 직접 연구를 해야한다. 
그럼에도 불구하고 답러닝을 해야겠다면, 하고 싶다면 다음 세 가지를 준비하면 된다.
1. 데이터 2. 프로그램 3. 컴퓨터
 

1. 데이터 

- 딥러닝은 결국 학습이고, 학습을 위해서는 데이터가 필요하다. 컴퓨터에서 데이터를 학습시키는데 한 클래스 당 1500장의 사진이 필요하다. 만약, 두 개의 물체를 분류 하려면? 총 두 개의 클래스 즉, 3000장의 사진이 필요한 것이다.

2. 프로그램

 - 데이터가 준비되었다면, 이를 학습 시켜 줄 프로그램이 필요하다. 데이터를 학습 시킬 모델과 알고리즘을 만들거나 활용해야 한다.

3. 컴퓨터

 - 데이터와 프로그램을 사용할 수있는 컴퓨터가 필요하다. 대형 그래픽 카드와 오버스펙 컴퓨터를 이용하면 효율적인 학습을 할 수 있다.

그렇다면 잠시 계산을 해보자.
성능이 좋은 컴퓨터, 이를 테면 4090같은. 2대를 산다고 하면 약 1000만원 정도 될것이다.
그리고 데이터를 수집하는데 걸리는 시간, 비용, 정확한 사진을 찍어내기 위한 카메라도 필요할 것이다.
또 하루종일 데이터를 학습시키기 위해 컴퓨터를 24시간 내내 켜 놓는다고 하자. 전기료가 어마 어마 할것이다.
(아마 엄마의 등짝 스매싱도 어마 어마할 것으로 예측된다.)

이 비용을 다 합하면 얼마나 될까? 정확한 예측은 어렵지만, 굉장히 많은 돈이 필요하단 사실은 누구나 느꼈을 것이다.
그런데 한 번쯤 배워보고 싶다는 생각을 하는 사람도 있을것이다. 나처럼. 그렇다면, 조금 쉽게 시작할 수는 없는 걸까?
당연히 가능하다. 요즘 라이브러리, 프레임 워크가 잘 되어있기 때문에 저 세 가지가 없어도 딥러닝을 배울 수 있다.
 
대표적으로 구글의 코랩이 있는데, 설치할 필요 없이 바로 사용 할 수 있다.

 

Google Colaboratory

 

colab.research.google.com

다른 것 다 필요없이 코랩 만으로 딥러닝이 가능하다. 준비가 되었으니 딥러닝을 시작하기 전 알고가면 좋은 것들에 대해 얘기하고자 한다.

알아두면 좋은,


1. ML 과 Traditional Programming(전통적인 프로그래밍) 차이
개발자라면 대부분 전통적인 프로그래밍을 해왔을 것이다.
전통적인 프로그래밍은 입력 데이터를 넣고 규칙을 통하 출력을 만들어낸다. 하지만 머신러닝은 다르다. 입력 데이터와 규칙을 통해 출력을 만들어낸다. 조금 더 쉽게 설명하자면, 전통적인 프로그래밍은 정답을 내는거고, 머신러닝은 정답을 만들어가는 것이다.


2. TensorFlow(텐서플로) & Keras(케리스)
아까 언급했듯, 요즘 라이브러리와 프레임워크가 잘 되어있다. 그 중 텐서플로와 케라스를 조금 얘기하고자 한다.


텐서플로는 구글이 개발한 오픈소스 소프트웨어 라이브러리이며 머신러닝과 딥러닝을 쉽게 사용할 수 있도록 다양한 기능을 제공한다.

주로 이미지 인식이나 반복 신경망 구성, 기계 번역, 필기 숫자 판별 등을 위한 각종 신경망 학습에 사용한다. 특히 대규모 예측 모델 구성에 뛰어나 테스트부터 실제 서비스까지 사실상 거의 모든 딥러닝 프로젝트에서 범용적으로 활용 가능하다. 하지만, 딥러닝 모델을 만드는 데 기초 레벨부터 직접 작업해야 하기 때문에 초보자가 사용하기엔 어렵다는 단점이 있다.

 

케라스는 텐서플로의 문제를 해결하기 위해 보다 단순화된 인터페이스를 제공하는 케라스가 개발되었다. 

일반 사용 사례에 최적화된 간단하고 일관된 인터페이스를 제공한다. 사용자 오류에 대해 명확하고 실용적인 피드백을 제공한다.

구성 요소는 모듈 형태이기 때문에, 각 모듈이 독립성을 갖는다. 그래서 새로운 모델을 만들 때 각 모듈을 조합해 쉽게 새로운 모델을 만들 수 있다. 하지만 모듈화의 한계로 복잡한 프로젝트에 구현 범위가 다소 좁은 편이다. 또한 케라스는 다양한 백엔드 위에서 동작하기 때문에 어떤 오류가 발생했을 때 케라스 자체의 문제인지, 백엔드 언어의 문제인지 특정하기 어려운 단점이 있다.

profile

궁금한게 많은 열아홉

@jjin502

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!