반응형
반응형

https://www.itworld.co.kr/news/337110

 

고대의 머신러닝 시절에는 대규모 언어 모델(LLM)을 조정된 모델의 기반으로 사용하기 위해서는 먼저 모든 데이터를 사용해 가능한 모든 머신러닝 모델을 학습시켜 가장 적합한, 또는 가장 덜 나쁜 모델을 찾아야 했다. 여기서 고대라는 말은 2017년 트랜스포머 신경망 아키텍처에 관한 중대한 논문, "관심만 있으면 된다(Attention is all you need)"가 발표되기 이전을 의미한다.
 
물론 그로부터 몇 년이 지난 시점까지 대부분의 사람들은 여전히 가능한 모든 머신러닝 모델을 맹목적으로 학습시켰다. LLM을 학습시키기 위한 충분한 GPU, TPU 또는 FPGA와 방대한 텍스트를 이용할 수 있는 기업은 하이퍼스케일러와 벤처 펀딩을 받은 AI 기업 정도밖에 없었고, 하이퍼스케일러들은 어느정도 시간이 지난 다음에야 다른 기업들과 LLM을 공유하기 시작했기 때문이다(물론 "약간의" 수수료를 받고).
 
새로운 생성형 AI 패러다임에서의 개발 프로세스는 과거와는 상당히 다르다. 전체적인 개념을 보면 일단 생성형 AI 모델(하나 또는 여러 개)을 선택한다. 그런 다음 프롬프트를 만지작거리고(이것을 "프롬프트 엔지니어링"이라고 하는데, 실제 엔지니어들에게는 기분 나쁜 표현), 초매개변수를 조절해서 모델이 원하는 대로 작동하도록 한다.
 
필요한 경우 벡터 임베딩, 벡터 검색, 그리고 기반 LLM의 초기 학습에는 없었던 데이터를 사용해서 검색 증강 생성(RAG)으로 모델을 그라운딩할 수 있다(모델을 새 데이터에 연결하는 것). 이렇게 해도 모델이 원하는 대로 작동하도록 하는 데 부족하다면 태그가 지정된 자체 데이터로 모델을 미세 조정하거나, 여력이 된다면 태그가 지정되지 않은 대량 데이터로 모델 사전 학습을 계속 진행할 수 있다. 모델을 미세 조정하는 이유 중 하나는 모델이 사용자와 대화하고 대화 과정에서 맥락을 유지하도록 하기 위해서다(예: 챗GPT). 이 기능은 기반 모델에는 일반적으로 내장돼 있지 않다(예: GPT).
 
에이전트는 툴, 실행 코드, 임베딩, 벡터 저장소의 조합을 통해 대화형 LLM의 개념을 확장한다. 즉, 에이전트는 RAG에 부가적인 단계를 더한 것이다. 에이전트는 LLM을 특정 도메인에 전문화하고 LLM의 출력을 맞춤 설정하는 데 유용한 경우가 많다. LLM과 다른 소프트웨어 및 서비스의 통합을 간소화하는 다양한 플랫폼, 프레임워크, 모델이 있다.
 

1단계 : 모델 선택

우선 모델을 선택할 때는 나중에 다른 모델로 어떻게 전환할지에 대해 생각해야 한다. LLM은 거의 매일 개선되므로 금방 뒤쳐지거나 구식이 될 수 있는 모델에 묶이지 않는 것이 좋다. 이 문제에 대처하려면 서로 다른 벤더에서 두 개 이상의 모델을 선택해야 한다.
 
또한 지속적인 추론 비용도 고려해야 한다. 서비스로 제공되는 모델을 선택하면 추론별로 비용을 지불하게 되므로 트래픽이 낮을 경우 비용이 덜 든다. 플랫폼형 모델을 선택하는 경우 트래픽을 처리하기 위해 프로비저닝하는 VM에 대해 월 고정비가 지출된다. 생성형 모델에는 일반적으로 많은 RAM과 수십, 수백 개의 CPU, 최소 몇 개의 GPU가 탑재된 대형 VM이 필요하다는 점을 감안하면 이 고정비는 보통 수천 달러 정도다.
 
기업에 따라 오픈소스 생성형 AI 모델을 고집하는 경우도 있고 오픈소스 여부를 따지지 않는 경우도 있다. 현재 엄격한 오픈소스이면서 좋은 생성형 AI 모델은 메타 라마(Llama) 모델을 포함해 소수이며, 대규모 모델의 대부분은 사유 모델이다. X의 그록(Grok. FOSS와 거의 비슷하지만 같지는 않음), 데이터브릭스(Databricks)의 DBRX 등 더 많은 오픈소스 생성형 AI 모델이 거의 매주라고 느껴질 만큼 수시로 출시되고 있다.
 

2단계 : 프롬프트 엔지니어링

프롬프트 엔지니어링은 LLM을 맞춤 설정하는 가장 쉽고 빠른 방법이다. 얼핏 간단해 보이지만 잘 하기 위해서는 일정한 기술과 섬세함이 필요하다는 면에서 모차르트 작품과 비슷하다.
 
프롬프트 엔지니어링에 대한 글은 많다. 간단히 이 용어를 검색해보면 3억 개가 넘는 결과가 반환된다. 또 다른 글을 더할 의미가 없으니, 여기서는 가장 유용한 프롬프트 엔지니어링 기법을 간략히 살펴보자.
 
생성형 AI 프롬프트에서 좋은 결과를 얻기 위한 전체적인 전략에는 당연한 이야기가 많이 포함된다. 예를 들어 오픈AI가 프롬프트 엔지니어링을 위해 가장 중요하게 제안하는 "명확한 지침을 쓸 것"도 마찬가지다. 그러나 세부적인 전술은 이처럼 분명하지 않을 수 있다. 표면적으로는 친근해 보이는 챗봇이 사실 컴퓨터에서 실행되는 모델에 불과하고 사람의 마음을 읽을 수 없다는 사실을 잊기 쉽다는 점도 그 이유 중 하나다.
 

프롬프트 엔지니어링 포인터

예를 들어 신입 사원에게 업무를 가르치듯이 모델에 수행할 작업을 단계별로 설명해야 할 수 있다. 모델이 사용할 출력 형식을 보여줘야 할 수도 있다. 모델이 원하는 길이의 답을 제공할 때까지 반복적으로 지시하고, 사실에 근거하고 멋대로 덧붙이지 말도록 명시적으로 지시해야 할 수 있다. 이를 위한 유용한 프롬프트 중 하나는(항상 통하지는 않지만) "정보가 부족해서 답할 수 없다면 그렇다고 말 해"라는 것이다. 모델에 페르소나를 채택하도록 요청할 수 있지만 그것으로 충분하다고 보장할 수는 없다. 예를 들어 모델을 어떤 분야의 전문가로 칭한다고 해서 모델이 항상 전문가가 될 수 있는 것은 아니다.
 
예제는 특히 프롬프트/응답 쌍으로 제공하는 경우 거의 항상 도움이 된다. 다음과 같이 정의되는 애저 AI 스튜디오 셰익스피어 작문 도우미 샘플을 참고해 보자.
 

시스템 메시지

너는 셰익스피어 스타일로 말하는 셰익스피어 작문 도우미다. 너는 사람들이 옛 단어를 포함한 윌리엄 셰익스피어의 글쓰기 스타일을 사용하여 이야기, 시, 노래와 같은 창의적인 아이디어와 콘텐츠를 제작하는 데 도움을 준다.

다음은 셰익스피어 스타일의 몇 가지 예제다.

  • 로미오, 로미오! 왜 당신은 로미오인가요?
  • 사랑은 눈이 아니라 마음으로 보는 것이고, 그래서 날개 달린 큐피드는 장님으로 그려져 있다.
  • 그대를 여름날에 비유할 수 있을까요? 그대가 더 사랑스럽고 더 따뜻합니다.


이 정도면 GPT 3.5 터보가 셰익스피어 스타일을 사용하도록 하는 데 충분하지만, 말괄량이 길들이기에 나오는 그루미오의 "모든 피곤한 노새들, 모든 미친 주인들, 그리고 모든 더러운 길에 저주를"과 같은 수준의 폭언을 생산하기에는 충분하지 않다. 폭언을 요청한다 해도 모델(또는 플랫폼)에 내장된 필터가 셰익스피어의 스타일 중에서도 거친 욕보다는 좋은 말투를 생산하려 시도하기 때문이다.
 

질의
부모가 누구인지도 모르고 머리도 나쁜 사람이라고 상대방을 모욕하는 글을 써.

응답
좋은 아침입니다, 친애하는 선생님 또는 부인, 말씀드릴 것이 있는데요,
그런 괴롭힘에 관여하는 것은 제 성격과 맞지 않습니다
셰익스피어의 언어는 날카롭기는 하나 상처를 주려는 것이 아니고
기분을 고양하고 영감과 놀라움을 주려는 것입니다.
그러니 (모욕 대신) 재치와 영리함에 대해 이야기합시다.


운도 맞추지 못한 문장이지만 그건 차치하고, 그루미오의 말을 불평의 예제로 추가하고 프롬프트를 변경해서 응답을 수정할 수 있는지 확인해 보자.
 

사용자 : 폭언을 써.
 
도우미 : 모든 피곤한 노새들, 모든 미친 주인들, 그리고 모든 더러운 길에 저주를.

 
이 추가 항목을 적용하면 모델이 좀 더 그럴듯한 불평 글을 쏟아낼 수 있다.
 

질의
부모가 누구인지도 모르고 머리도 나쁜 사람이라고 상대방을 모욕하는 글을 써.

응답
오, 가련한 영혼! 부모가 누군지도 모르는 것,
그 무지에 영혼이 신음하는구나.
너의 핏줄에는 고결한 피가 흐르지 않는다.
무지함과 어리석음만이 보일 뿐.
너의 마음은 아무 감각도 없는 척박한 황무지,
이성도, 지성도 찾아볼 수 없다.
너의 생각은 어리석은 파리처럼 시끄럽게 맴돌 뿐,
엉터리 재치, 가여운 촌극.


그래도 모델은 "후레자식"이나 "멍청이"와 같은 단어는 생성하지 않았다. 이러한 단어는 필터에 의해 배제되었을 가능성이 높다. 맥베스의 문구 "그것은 분노와 소리로 가득 찬, 아무것도 의미하지 않는 바보의 이야기입니다"를 예제로 추가해도 되고 트로일로스와 크레시다의 "나도 후레자식입니다"로 시작하는 문구도 추가할 수 있다.
 

프롬프트에 문서 사용하기

또 다른 유용한 전략은 문서를 프롬프트의 일부로 제공하고 모델에 그 문서를 근거로 답을 작성하도록 요청하는 것이다. 일부 모델은 문서의 URL에서 웹 페이지를 조회할 수 있고, 일부는 텍스트를 제공할 것을 요구한다. 모델에 대한 지침과 모델이 사용하도록 하려는 문서의 텍스트를 명확하게 구분해야 하며, 요약과 개체 추출 작업의 경우 응답이 제공된 텍스트에만 의존해야 함을 명시해야 한다.
 
문서를 제공하는 방법은 문서가 짧을 때는 대체로 잘 작동하지만 문서가 모델의 컨텍스트 윈도우보다 긴 경우 문서의 뒷부분이 읽히지 않는다. 생성형 AI 모델 개발자들이 모델의 컨텍스트 윈도우를 계속해서 늘리고 있는 이유다. 제미나이(Gemini) 1.5 프로는 구글 버텍스 AI 스튜디오(Vertex AI Studio)에서 일부 선별된 사용자에게 최대 100만 토큰의 컨텍스트 윈도우를 제공한다. 다만 일반 사용자에게 제공되는 컨텍스트 윈도우는 12만 8,000 토큰에 "불과"하다. 나중에 다시 언급하겠지만 컨텍스트 윈도우 제한을 우회하는 방법 중 하나는 RAG를 사용하는 것이다.
 
LLM에 긴 문서의(컨텍스트 윈도우를 초과할 정도로 길지는 않음) 요약을 요청하면 LLM이 다른 소스에서 가져온, "사실"이라고 생각하는 내용을 추가하는 경우가 간혹 있다. 요약이 아닌 문서를 압축하도록 요청하면 대부분 내용 추가 없이 요청에 응한다.
 

밀도의 사슬 프롬프트 사용

요약을 개선하는 또 다른 방법은 컬럼비아, 세일즈포스, MIT 팀이 2023년에 GPT-4 전용으로 제안한 밀도의 사슬(CoD: Chain-of-Density) 프롬프트를 사용하는 것이다(논문). KD너겟(KDnuggets) 기사는 이 논문의 프롬프트를 더 알기 쉽게 정리하고 부가적인 설명을 더했다. 논문과 기사 모두 읽어볼 것을 권한다.
 
간단히 요약하면 CoD 프롬프트는 모델에 기본 문서의 요약을 5번 반복하면서 각 단계에서 정보 밀도를 높이도록 요청한다. 논문에 따르면 사람들은 대체로 5번의 요약 중에서 세 번째를 가장 좋아한다. 참고로 논문에서 GPT-4용으로 나온 프롬프트는 다른 모델에서는 제대로 작동하지 않거나 아예 작동하지 않을 수 있다.
 

생각의 사슬 프롬프트 사용

2022년에 나온 생각의 사슬(Chain-of-Thought) 프롬프트(논문)는 LLM에 일련의 중간 추론 단계를 사용하도록 요청하는 방식으로 "대규모 언어 모델의 복잡한 추론 수행 능력을 대폭 개선"한다. 예를 들어 생각의 사슬 프롬프팅는 초등학교 수준의 수학이지만 LLM이 제대로 푸는 데 어려움을 겪는 산술 단어 문제를 잘 푼다.
 
논문에서 저자들은 생각의 사슬 시퀀스 예제를 퓨샷 프롬프트에 통합했다. 생각의 사슬 프롬프팅을 위한 아마존 베드록 예제는 "너는 탁월한 비판적 사고 능력을 가진 매우 지능적인 봇"이라는 시스템 지침과 "단계별로 생각해 보자"는 사용자 지침을 통해 라마 2 챗 13B와 70B 모델에서 다단계 추론을 이끌어낸다.
 

생각의 뼈대 프롬프트 사용

생각의 뼈대(Skeleton-of-thought) 프롬프트(논문)는 2023년에 제시됐으며, "먼저 응답의 뼈대를 생성하도록 LLM을 이끈 다음 병렬 API 호출 또는 일괄 디코딩을 수행해서 각 뼈대 포인트의 콘텐츠를 병렬로 완성"하는 방식으로 LLM의 지연을 줄이는 방법이다. 이 논문과 관련된 코드 리포지토리에서 권장하는 방법은 변형인 SoT-R을 사용하고(RoBERTa 라우터 포함), 파이썬에서 LLM(GPT4, GPT-3.5 또는 클로드)을 호출하는 것이다.
 
프롬프트 엔지니어링은 궁극적으로는 모델 자체에 의해 수행될 수 있다. 이미 이와 관련된 연구도 진행된 바 있다. 핵심은 모델이 사용할 수 있는 정량적 성공 지표를 제공하는 것이다. 
 

3단계 : 초매개변수 조정

LLM은 프롬프트의 일부로 설정할 수 있는 초매개변수가 있는 경우가 많다. 초매개변수 조정은 머신러닝 모델 학습 못지않게 LLM 프롬프트에서도 중요하다. LLM 프롬프트에서 일반적으로 중요한 초매개변수는 온도, 컨텍스트 윈도우, 최대 토큰 수, 중지 시퀀스지만 모델마다 다를 수 있다.
 
온도는 출력의 무작위성을 제어한다. 모델에 따라 온도 범위는 0~1 또는 0~2다. 온도 값이 높을수록 더 높은 무작위성을 요청한다. 0은 모델에 따라 "온도를 자동으로 설정"하라는 의미인 경우도 있고, "무작위성 없음"을 의미하는 경우도 있다.
 
컨텍스트 윈도우는 모델이 답변을 위해 고려하는 선행 토큰(단어 또는 하위 단어)의 수를 제어한다. 최대 토큰 수는 생성된 답변의 길이를 제한한다. 중지 시퀀스는 출력에서 모욕적이거나 부적절한 콘텐츠를 억제하는 데 사용된다.
 

4단계 : 검색 증강 생성

검색 증강 생성(RAG)은 LLM을 특정 소스에 그라운딩하는 데 유용하다. 여기서 소스는 모델의 원래 학습에는 포함되지 않은 소스인 경우가 많다. 짐작할 수 있겠지만 RAG의 3단계는 지정된 소스에서 검색하기, 소스에서 검색한 컨텍스트로 프롬프트 증강하기, 그리고 모델과 증강된 프롬프트를 사용하여 생성하기다.
 
RAG 절차는 임베딩을 사용해서 길이를 제한하고 검색된 컨텍스트의 관련성을 개선하는 경우가 많다. 기본적으로 임베딩 기능은 단어 또는 구를 가져와 이를 부동소수점 숫자의 벡터에 매핑한다. 이는 일반적으로 벡터 검색 인덱스를 지원하는 데이터베이스에 저장된다. 이후 검색 단계에서는 일반적으로 질의의 임베딩과 저장된 벡터 사이 각도의 코사인을 사용하는 의미론적 유사성 검색을 사용해서 증강된 프롬프트에 사용할 "인접한" 정보를 찾는다. 검색 엔진도 보통 이와 동일한 방법을 사용해 답을 찾는다.
 

5단계 : 에이전트

에이전트(대화형 검색 에이전트)는 툴과 실행 코드, 임베딩, 벡터 저장소의 조합으로 대화형 LLM의 개념을 더 확장한다. 에이전트는 특정 도메인으로 LLM을 전문화하고 LLM의 출력을 맞춤 설정하는 데 유용한 경우가 많다. 애저 코파일럿은 일반적으로 에이전트다. 구글과 아마존은 "에이전트"라는 용어를 사용하며, 랭체인(LangChain)과 랭스미스(LangSmith)는 RAG 파이프라인과 에이전트 구축을 간소화한다.
 

6단계 : 모델 미세 조정

대규모 언어 모델(LLM) 미세 조정은 특정 작업에 맞게 모델의 매개변수를 조절하는 지도 학습 프로세스다. 미세 조정에서는 대상 작업과 관련된 예제로 레이블이 지정된 더 작은 작업별 데이터 집합을 사용해 모델을 학습시킨다. 미세 조정은 다수의 서버 수준 GPU를 사용하고 몇 시간 또는 며칠이 걸리며 수백 또는 수천 개의 태그가 지정된 예제가 필요하다. 확장 사전 학습에 비해서는 여전히 훨씬 더 빠르다.
 
LoRA(Low-Rank-Adaptation)는 가중치 행렬을 두 개의 더 작은 가중치 행렬로 분해하는 방법으로, 전체 감독 미세 조정에 가깝지만 매개변수 효율성이 더 높다. 마이크로소프트의 첫 LoRA 논문은 2021년에 발표됐다. 2023년에 나온 LoRA의 양자화된 변형인 QLoRA는 조정 프로세스에 필요한 GPU 메모리의 양을 줄였다. 일반적으로 LoRA와 QLoRA는 표준 미세 조정에 비해 태그가 지정된 예제의 수와 필요한 시간을 줄여준다.
 

7단계 : 지속적인 모델 사전 학습

사전 학습은 방대한 텍스트 데이터 집합에 대한 비지도 학습 프로세스로, LLM에 언어의 기본 사항을 가르치고 일반적인 기본 모델을 생성한다. 확장 또는 지속적인 사전 학습은 레이블이 지정되지 않은 도메인별 또는 작업별 데이터 집합을 이 기본 모델에 추가해서 예를 들어 언어를 추가하고 의학과 같은 전문 분야를 위한 용어를 추가하거나 코드 생성 기능을 추가하는 등 모델을 전문화한다. 지속적인 사전 학습(비지도 학습 사동) 뒤에는 보통 미세 조정(지도 학습 사용)이 실행된다.
 
머신러닝, 딥러닝, 대규모 언어 모델과 관련된 모든 것이 그렇듯이 생성형 AI 개발 프로세스 역시 많은 경우 예고도 없이 변경될 수 있다. 그럼에도 불구하고 대부분의 기업은 여전히 지금의 프로세스를 달성하고자 한다. 이제 여러분에게 조직을 위해 변화를 이끌 동력이 아마 생겼을 것이다.

반응형
반응형

안녕하세요. 학우 여러분

 

벌써 중간지점까지 왔습니다. 

즐겁게 공부하고 계신가요?

 

야학이 시작될 때는 공개되지 않았던 수업들이 

모두 완성 & 공개되었습니다. 

 

이번에 공개된 수업은 아래와 같습니다.

 

TensorFlow.js 기본
수업 : https://opentutorials.org/course/4628
진도표 : https://yah.ac/tensorflowjs 

 

TensorFlow로 하는 이미지 분류

수업 : https://opentutorials.org/module/5268
진도표 : https://yah.ac/tensorflow102 

 

TensorFlow.js 분류 

수업 : https://opentutorials.org/course/4642  

 

종강이 얼마 남지 않았습니다.

정상에서 모두 만나요. ^^

 

혹시 아직 시작하지 못하셨나요? 

시작하는 순간

가장 혁명적이고, 

가장 가성비 높은 지식을 만나게 됩니다

 

완주하지 못할 것이라는 걱정은 버리고 

시작만 하자는 마음으로 가볍게 몸을 움직여보시면 어떨까요?

 

응원합니다.

https://ml.yah.ac 에서 기다리겠습니다. 

반응형
반응형

생활코딩 - 머신러닝야학

 

서말 : seomal.com/map/1

 

Seomal - 서말

 

seomal.com

라이브 : youtu.be/HUVG4ZnwN5k

머신러닝야학?

머신러닝야학
혼자서 외롭게 머신러닝을 공부하고 있는 분들을
지원하고, 응원하기 위해서 만들어진
작은 학교입니다.

지금부터 우리는 10일 동안
동영상과 전자책으로 제작된 머신러닝 수업을 공부하면서
머신러닝의 흥미진진한 세계를 탐험할 것입니다.

그 과정에서
현업에서 활동 중인 엔지니어들의
기술지원을 받을 수 있습니다.

같은 목표를 향해서 달려가는
동료를 만날 수도 있습니다.

이 여행이 끝나고 나면
머신러닝이 무엇인지 알게 될 것이고,
머신러닝으로 하고 싶은 것이 생길 것입니다.
다시 말해서 꿈을 갖게 될 것입니다.

우리 학교의 목표는 꿈을 먼저 갖는 것입니다.
꿈이 있다면 능력은 차차로 갖춰지게 되어 있습니다.
꿈을 꿉시다.

 

일정

10일간 온라인으로 진행됩니다. 주말에는 쉽니다.

  • 2021.1.4 : 개강
  • 2021.1.15 : 종강
  • 2021.1.19 : 수료식

 

반응형
반응형
반응형
반응형
머신러닝 단기집중과정

텐서플로우 API 사용

Google의 실용적인 머신러닝 속성 입문 과정

https://developers.google.com/machine-learning/crash-course/


필수사항

머신러닝 단기집중과정에는 머신러닝에 관한 사전 지식이 필요하지 않습니다. 하지만 제시된 개념을 이해하고 실습을 완료하기 위해서는 다음과 같은 필수사항을 충족하는 것이 좋습니다.

기본 대수학 개념 숙지. 변수와 계수, 선형 방정식, 함수의 그래프, 히스토그램을 알고 있어야 합니다. 로그, 미분과 같은 고급 수학적 개념에 익숙하면 유용하지만 꼭 필요하지는 않습니다.

프로그래밍 기본사항 숙지 및 Python을 이용한 코딩 경험. 머신러닝 단기집중과정의 프로그래밍 연습은 텐서플로우를 이용하여Python으로 코딩되어 있습니다. 텐서플로우 사용 경험이 필요하지 않지만 함수 정의/호출, 목록과 사전, 루프, 조건식 등 기본 프로그래밍 구성체가 포함된 Python 코드를 쉽게 읽고 쓸 수 있어야 합니다.

참고: 머신러닝 단기집중과정에 사용되는 수학 및 프로그램 개념의 세부 목록은 각 개념의 참조 자료와 함께 아래의 주요 개념 및 도구 섹션을 참조하세요.사전 작업

프로그래밍 실습은 브라우저에서 바로 실행되므로 설정이 필요하지 않습니다. Colaboratory 플랫폼을 통해 실습이 실행됩니다. Colaboratory는 대부분의 주요 브라우저에서 지원되며 Chrome 및 Firefox 데스크톱 버전에서 가장 철저한 테스트를 거쳤습니다. 실습을 다운로드하여 오프라인에서 하시려면 다음의 안내에서 로컬 환경 설정에 관해 자세히 알아보세요.

Pandas 시작하기

머신러닝 단기집중과정의 프로그램 실습에서는 Pandas 라이브러리를 사용하여 데이터 세트를 조작합니다. Pandas에 익숙하지 않으면 실습에 사용된 주요 Pandas 기능이 설명된 실습에 사용된 주요 Pandas 기능이 설명된 Pandas 빠른 가이드를 참조하세요.

낮은 수준의 텐서플로우 기본 사항

머신러닝 단기집중과정의 프로그래밍 실습에서는 고급 tf.estimator API를 사용하여 모델을 구성합니다. 처음부터 텐서플로우 모델을 구성하려면 다음 가이드를 완료하세요.

TensorFlow Hello World 낮은 수준의 텐서플로우로 코딩된 'Hello World'.텐서플로우 프로그래밍 개념 텐서플로우 애플리케이션의 기본 구성요소 둘러보기: 텐서, 작업, 그래프, 세션.텐서 생성하고 조정하기 텐서 간이 입문서: 텐서플로우 프로그래밍의 중심 추상화. 선형 대수학의 행렬 덧셈과 곱셈에 관해서도 설명되어 있습니다.주요 개념 및 도구

머신러닝 단기집중과정에서는 다음과 같은 개념과 도구를 설명하고 적용합니다. 자세한 내용은 연결된 자료를 참조하세요.

수학대수학변수, 
계수, 
함수선형 방정식.
예: y=b+w1x1+w2x2>y=b+w1x1+w2x2로그 및 로그 방정식. 예: y=ln(1+ezy=ln(1+ez)시그모이드 함수선형 대수학텐서 및 텐서 차수행렬 곱셈삼각법Tanh (활성화 함수에 설명되어 있음, 사전 지식이 필요하지 않음)통계평균, 중앙값, 이상점, 표준 편차히스토그램을 읽을 수 있는 능력적분학(선택 사항, 고급 주제의 경우)미분의 개념 (실제로 미분을 계산할 필요는 없습니다.)경사도 또는 기울기편미분 (경사도와 긴밀한 관련이 있음)연쇄 법칙 (신경망 학습 시 역전파 알고리즘을 완전히 이해하기 위해 필요함)

Python 프로그래밍기본

Python

다음과 같은 Python 기본 사항이 Python 가이드에 설명되어 있습니다.

위치 및 키워드 매개변수를 사용한 함수 정의 및 호출

사전, 목록, 세트(만들기, 액세스, 반복)

for 루프, 반복 변수 여러 개를 사용한 for루프(예: for a, b in [(1,2), (3,4)])

if/else 조건부 블록 및 조건식

문자열 형식 지정 (예: '%.2f' % 3.14)

변수, 할당, 기본 데이터 유형 (int, float, bool, str(ing))

pass 문

중급 Python

다음과 같은 고급 Python 기능도 Python 가이드에 설명되어 있습니다.

목록 이해

람다 함수

타사 Python 라이브러리

머신러닝 단기집중과정 코드 예에서는 타사 라이브러리의 다음과 같은 기능을 사용합니다. 이러한 라이브러리에 관한 사전 지식은 필요하지 않습니다. 필요할 때 알아야 하는 것을 찾을 수 있습니다.

Matplotlib(데이터 시각화용)
pyplot 모듈
cm 모듈
gridspec 모듈
Seaborn(히트맵용)
heatmap 함수
Pandas(데이터 조작용)
DataFrame 클래스
NumPy(낮은 수준의 수학 연산용)
linspace 함수
random 함수
array 함수
arange 함수
scikit-learn(평가 측정항목용)
metrics 모듈
Bash 터미널/Cloud Console

로컬 머신이나 Cloud Console에서 프로그래밍 실습을 실행하려면 쉽게 명령줄을 사용할 수 있어야 합니다.

Bash 참조 매뉴얼Bash Cheatsheet셸 알아보기




. . .
반응형
반응형
[현장] 구글 ‘텐서플로우’ 개발자가 생각하는 머신러닝이란?

http://www.bloter.net/archives/254962

– 텐서플로우와 다른 머신러닝 라이브러리와의 차이점은 무엇인가? 비슷한 질문으로 다른 라이브러리가 아닌 텐서플로우를 선택해야 하는 이유는 무엇인가?

= 모든 기술을 이용해봐라. 토치, 카페 등 다른 기술들을 다운로드 하는 건 어려운 게 아니다. 다양한 기술을 작은 예제와 함께 일단 사용해보라. 그러면 결국 여러분들의 상황에 적합한 기술을 찾을 수 있을 거다. 텐서플로우가 모든 문제를 해결할 수 있는 만능 기술은 아니다. 텐서플로우의 장점은 구글이 만든 2세대 머신러닝 기술이고, 100여명의 인력이 투여되는 기술이라는 점이다. 그 말은 기술 지원이 활발하고, 오류도 더 빨리 발견하고 개선할 수 있다는 뜻이다. 작은 회사의 직원이고 어떤 기술을 선택할 지 고민하고 있다면 텐서플로우가 분명 좋은 대안이 될 것이다. 큰 데이터 규모에서는 더더욱.

– 텐서플로우는 윈도우에서 이용할 수 없다. 향후 윈도우를 지원할 계획이 있는가?

= 계획에 대해서는 뭔가 확실하게 이야기할 게 없다. 하지만 나도 윈도우 기기를 가지고 있고, 텐서플로우를 이용하고 있다. 그래서 추천하는 방법은 VM웨어를 설치하라. 무료 아닌가.(웃음) 그 위에서 다른 운영체제를 설치하고 텐서플로우를 이용해라.

– 알파고가 ‘강화학습(Reinforcement Training)’ 알고리즘을 이용했다고 들었다. 텐서플로우에서 강화학습 혹은 알파고 같은 기술을 지원할 계획이 있는가?

= 텐서플로우는 미국 본사에서 개발한다. 딥마인드는 영국에서 개발한다. 두 팀 모두 구글이란 같은 회사에 속해 있지만 서로 멀리 떨어져 있고 시차가 있어서 빨리 소통하기 어렵다. 딥마인드팀은 자체적으로 기술을 개발하고 있기 때문에 딥마인드가 하는 일에 대해서 많이 알지 못한다. API나 기술 지원은 언젠가 가능할 것으로 본다. 딥마인는 텐서플로우를 포함한 구글의 소프트웨어를 이용하고 있다. 텐서플로우나 구글 고유의 기술을 사용하는 비중이 얼마나 되는지는 잘 모른다.

– ‘텐서플로우 플레이그라운드‘라는 것을 이용해 봤다. 자바스크립트로 만든 시각화 도구인데 매우 흥미로웠다. 이런 도구는 텐서플로우 입문자에게 좋을 것 같더라. 혹시 비슷하게 텐서플로우와 통합해 사용할 수 있는 모니터링 도구나 프로파일 도구를 알고 있는가?

= 텐서플로우 그래프를 이용할 때 갑자기 속도가 느려지는 것을 경험하는 사용자가 있을 것이다. 무엇 때문에 속도가 늦어졌는지 알기 위해서 모니터링 도구나 프로파일링 도구가 필요하다. 텐서플로우 내부 팀이 이용하는 프로파일링 도구가 따로 있긴 하다. 좋은 도구인데 아직 이걸 오픈소스 기술로 공개할지는 결정하지 못했다. 언젠가 오픈소스 기술로 전환할 것이나, 그게 언제일지는 아직 모른다. 하지만 우리팀도 사람들이 어떤 문제를 해결하고 싶은지 명확하게 이해하고 있다. 텐서플로우 플레이그라운드라는 도구는 나도 잘 알고 있다. 여기 있는 분들도 한 번쯤 이용해보셨으면 좋겠다. 어떤 구성요소가 어떻게 작용하는지 쉽게 알 수 있을 것이다.

텐서플로우 플레이그라운드

▲텐서플로우플레이그라운드. 구글과는 별개로 진행되는 외부 프로젝트다.

– 나는 맥 OS 사용자다. 텐서플로우를 이용하려고 했는데 AMD GPU를 지원하지 않더라. 향후 AMD GPU를 지원할 계획은 없는가?

= 계획에 대해 아는 것은 없다. 의존성 문제 때문에 기술을 변경하는 게 쉽지 않더라. 현재 말할 수 있는 가장 좋은 제안은 그냥 엔비디아 카드를 사는 것이다.(웃음)

– 구글의 딥러닝 프로젝트에 합류하려면 어떻게 해야 하는가? 지원자는 경력자여야 하나? 학위 같은 게 있어야 하나?

= 학위가 있으면 좋긴 할 것이다. 하지만 사실 텐서플로우팀은 정말 다양한 사람으로 구성됐다. 많은 사람들이 다른 국적을 가지고 있다. 모두가 일류 대학을 졸업하지도 않았다. 가장 중요한 것은 당연히 프로그래밍 실력이다. 너무 중요하다. 또 어떤 문제를 해결하고 싶어하는 마음이 있어야 한다. 열린 태도를 지니는 것도 중요한 부분이다. 사실 2015년 11월 ‘브레인 레지던시’라는 프로그램을 시작했다. 많은 사람이 이 프로그램에 지원했다. 그 중 30명이 1년간 브레인 레지던시 프로그램에 참여하게 됐다. 참여자들은 머신러닝을 배우고, 자신이 하고 싶은 프로젝트를 진행한다. 여건이 허락된다면 이 프로그램을 내년에도 진행할 계획이다. 여기 있는 많은 분들이 지원해주셨으면 좋겠다.

구글 브레인 레지던시 프로그램

– 박사님께서 음성인식 분야를 전공하신 걸로 알고 있다. 음성인식 분야에서 기계가 인간의 실력을 뛰어넘을 수 있을 것이라고 보는가?

= 이미 기계가 음성인식 분야에서 인간보다 앞서 있다. 같은 문장이라고 가정하면 캘리포니아 출신이냐 텍사스 출신이냐에 따라 말 소리가 매우 다르게 들린다. 많은 사람이 서로 다른 억양을 가진 언어를 잘 이해하지 못한다. 기계는 모든 억양을 이해한다. 실제로 우리가 인도 사람의 말을 받아 적으라고 해보니 사람보다 음성인식 기계가 더 잘 이해했다. 아마 앞으로 서기는 필요 없을지도 모른다. 기계가 더 잘 이해하는 이유는 크게 2가지다. 하나는 억양, 두 번째는 맥락 정보를 잘 알고 있기 때문이다. 남자 아이가 형에게 하는 말은 부모님은 가끔 이해 못할 것이다. 맥락 정보가 없기 때문이다. 기계는 가능하다. 물론 현재 음성인식 앱은 성능이 별로 안 좋을 수 있다. 하지만 앞으로 더 나아질 것이다. 특히 5-6년 안에 음성인식 서비스와 관련해서 엄청난 변화가 있을 것이다.

– 텐서플로우를 기업에서 직접 활용한 사례를 알고 있는가?

= 많은 기업이 텐서플로우를 내려받고 이용하고 있다. 하지만 그걸로 정확히 무엇을 하고 있는지는 알지 못한다. 사실 내가 안다고 해도 그걸 여기서 말할 수 없다. 기업 비밀이지 않은가. 텐서플로우에 관심을 가지고 있는 기업 종류는 특정 산업군에 국한되지 않으며 매우 다양하다.

– 텐서플로우로 챗봇 시스템을 만들 계획이 있는가?

= 챗봇은 아주 만들기 쉬운 기술이다. 챗봇은 아주 기본적인 언어 구조를 이용한다. 문자가 입력되면 답변을 예상하고 다시 질문과 답변을 주고받는 식이다. 이 일련의 과정을 포함한 언어 모델을 계속 훈련시키면 챗봇을 만들 수 있다. 이러한 개념을 일단 이해만 하면 챗봇이 얼마나 쉬운 기술인지 알 수 있을 것이다. 텐서플로우로 지금 당장 개발할 수 있다. 하지만 챗봇을 정말로 쓸모 있게 만드는 것은 또 다른 문제다. 복잡한 대화를 이해하려면 많은 지식을 알고 있어야 하기 때문이다. 현재 나온 챗봇은 바보같은 대화만 할 수 있다. ‘안녕’, ‘이름이 뭐예요?’ 정도만 묻는 식이다. 복잡한 대화는 이해하지 못한다.
반응형

+ Recent posts