거대 언어 모델(Large Language Model, LLM)과 프롬프트 엔지니어링

프롬프트와 프롬프트 엔지니어링

ChatGPT와 같은 거대 언어 모델(Large Language Model, LLM)을 사용할 때 모델에 전달하는 메시지를 프롬프트(Prompt)라고 하죠. 프롬프트를 잘 만들어서 원하는 결과물을 얻기 위해 연구하는 것을 프롬프트 엔지니어링이라고 합니다.

프롬프트는 한 문장이 될 수도 있고 여러 문단이 될 수도 있죠. 프롬프트를 몇 가지 주요 구성 요소들로 나눠보면 아래와 같이 정리할 수 있습니다.

  • Goal: 달성해야 하는 목표
  • Instruction: 구체적인 지시, 요구 사항 또는 질문
  • Role: 모델에게 조언자나 편집자, 작가 등의 역할을 지정해주는 부분
  • Context: 작업의 배경 지식이나 상황 제공
  • Output Format: 원하는 응답 형식을 지정해주는 부분
  • Systematic Approach: 특정 시스템이나 알고리즘을 따르도록 지시
  • Step-by-step: 복잡한 작업을 단계별로 처리하라고 지시
  • Clarifying Questions: 불확실한 부분은 모델이 사용자에게 질문하도록 권장
  • Examples: 질문과 응답 예제

이러한 분류는 정해져 있는 것은 아니고, 사람에 따라 다르게 분류할 수 있습니다. 또 매번 위의 모든 요소가 다 들어갈 필요도 없죠. 사용 목적에 따라 들어가는 요소들이 달라지게 됩니다. LLM은 예제로부터 학습할 수 있는데, 예제가 없으면 Zero-shot, 하나 있으면 One-shot, 두 개 이상 있으면 Few-shot learning이라고 합니다.

아래 나오는 내용은 주로 대화형 환경 보다는 LLM의 API (Application Programming Interface)를 이용해 사용자에게 드러나지 않게 구현하게 됩니다.

환각 현상의 완화

거대 언어 모델에서 나타나는 환각(hallucination, 거짓 응답) 현상을 줄이는 방법 중 하나가 Context를 제공하고 주어진 정보를 이용해 답하라고 지시하는 방법입니다. 물론 Context에는 사실을 담아야겠죠. 그러려면 Context 정보를 어디선가 가지고 와야 합니다.

Bing Chat, Bard

질문을 가지고 인터넷을 검색해서 Context에 들어갈 내용을 가져오면 Microsoft의 Bing Chat이나 Google의 Bard와 같이 최신 정보를 반영한 모델이 됩니다. 검색한 웹문서를 직접 열어서 필요한 부분을 찾을 필요 없이 질문에 대한 답을 알아서 정리해주죠.

문서에 대한 질의 응답: ChatPDF

Context를 PDF 파일과 같은 문서에서 가져오면 문서의 내용에 대해 질문할 수 있는 챗봇, ChatPDF가 됩니다. 인터넷 검색의 경우 이미 있는 Google이나 Bing과 같은 검색 엔진의 검색 결과에서 가장 먼저 나오는 몇 개의 인터넷 문서에서 정보를 가져오면 됩니다. PDF 파일은 어떻게 할까요?

PDF나 워드 문서의 경우 문서에서 텍스트 정보를 추출하여 텍스트를 컴퓨터에서 처리할 수 있는 숫자들의 벡터로 변환합니다. 이 과정을 벡터 임베딩(Vector Embedding)이라고 하죠. 문서 전체의 텍스트를 일정 길이(Chunk)로 나눠서 벡터로 변환한 후 벡터들을 벡터 데이터베이스(VectorDB)에 저장해 놓습니다. 질문이 들어오면 질문도 벡터로 변환합니다. 벡터들끼리는 거리를 측정할 수 있죠? 질문 벡터와 문서의 벡터들 사이의 거리를 측정하여 거리가 가까운 벡터들을 몇 개 추출하면 그 벡터에 해당하는 원본 텍스트가 Context에 들어가게 됩니다. 그럼 LLM은 질문에 대한 답을 포함할 가능성이 높은 Context의 정보를 이용해서 대답을 해주죠. 정리해보면, 다음과 같습니다.

  1. 답을 찾고자 하는 문서(문서들)에서 텍스트 추출
  2. 텍스트를 일정 길이로 나누기
  3. 나눈 내용을 벡터 임베딩을 이용해 벡터로 변환
  4. 변환한 벡터들을 벡터 데이터베이스에 저장
  5. 사용자 질문 (사용자 질문이 제일 처음에 문서와 함께 주어질 수도 있습니다)
  6. 사용자 질문을 벡터 임베딩을 이용해 벡터로 변환
  7. 질문 벡터와 벡터 데이터베이스에 저장된 벡터들 사이의 거리 계산
  8. 거리가 가장 가까운 벡터들 추출
  9. 추출한 벡터들의 원본 텍스트를 LLM에 질문에 대한 Context로 제공
  10. LLM은 질문에 대한 답을 Context에서 찾아서 사용자에게 응답

일반 검색에서는 검색하는 단어나 문장과 글자가 일치하는 것을 찾지만 벡터 검색은 의미가 유사한 내용을 찾는 의미 검색(semantic search)입니다. 벡터 데이터베이스에 회사의 제품에 관한 여러 가지 문서들을 넣으면 회사의 제품 상담 챗봇이 됩니다.

문서에는 PDF 뿐 아니라 Word, Excel, Power Point, Gmail, Notion 등 다양한 문서들이 있습니다. 이러한 문서들에서 텍스트를 편리하게 추출해주는 라이브러리로 Llama-Index가 있습니다.

인공지능 비서: AutoGPT, BabyAGI

LLM의 API를 호출하는 프로그램에서 Instruction에 특정 함수의 사용법을 알려줄 수 있습니다. 예를 들면 위키피디아 검색을 하고 싶으면 wikipedia(query)라고 출력하라고 알려줄 수 있습니다. 수학 계산을 하고 싶으면 calculate(equation)이라고 출력하라고 알려줄 수도 있죠. 질문과 함께 함수 사용법을 알려주고 함수를 사용할 수 있다고 LLM에 알려주면 LLM은 최종 대답을 하기 전에 필요한 정보를 얻기 위해 함수를 사용하게 됩니다. 직접 함수를 호출하는 것은 아니고 함수 호출에 필요한 명령을 출력하게 되는거죠. 그럼 프로그램에서 해당 함수를 호출하여 결과를 LLM에 전달해줍니다.

  1. 질문과 함께 사용할 수 있는 함수들을 LLM에 제시
  2. LLM에서 필요한 함수를 호출하는 명령 출력
  3. LLM을 호출하는 프로그램에서 함수 실행
  4. 함수 실행 결과를 LLM에 알려주기
  5. LLM에서 최종 응답

예를 들어, 광안대교를 언제 개통했는지 질문하고 위의 함수를 사용할 수 있다고 알려주면, wikipedia(광안대교 개통일)과 같은 출력을 내놓게 됩니다. 그럼 이 함수 호출 내용을 프로그램에서 분석해서 위키피디아 검색을 수행하고 결과 페이지(위키피디아 광안대교 페이지)의 내용을 LLM에 질문과 함께 Context로 전달하게 됩니다. 그럼 LLM은 Context에서 답을 찾아 대답하게 되죠.

LLM에서 Python 코드를 출력하면 코드를 실행해서 결과를 알려주겠다고 지시할 수도 있습니다. LLM에 지시를 내리면 LLM에서 지시를 수행하기 위한 코드를 작성해서 출력하고, 프로그램에서 코드를 실행한 후 실행 결과를 다시 LLM에 전달합니다. 그럼 LLM은 결과를 이용해 이후의 응답을 생성할 수 있죠. ChatGPT Plus의 Advanced Data Analysis (Code Interpreter의 새 이름)의 기본 원리입니다.

이렇게 LLM에 알려주는 함수는 LLM의 Tool 또는 Skill이라고 부릅니다. 많은 함수를 알려줄수록 LLM이 할 수 있는 일도 많아지죠. 복잡한 문제의 경우 문제 풀이 단계를 논리적으로 분석해서 제시하고 하나씩 차례대로 수행하라고 지시할 수도 있습니다. 각 단계를 수행할 때 사용할 수 있는 함수들도 같이 알려주죠. AutoGPTBabyAGI의 기본 원리입니다. 이런 LLM 프로그래밍을 편리하게 만들어주는 라이브러리로 LangChain이 있습니다.

J.A.R.V.I.S.

말로 지시를 내리고 소리로 응답을 듣고 싶다면? 음성 인식(Speech Recognition) 기술을 이용해 말을 글로 바꿔서 지시를 내릴 수 있습니다. LLM의 출력은 글을 읽어주는 음성 합성(Text-to-Speech) 기술을 이용하면 됩니다.

  1. 사용자가 음성으로 명령
  2. 음성 인식: 음성을 글자로 변환
  3. 글자를 LLM (AutoGPT)에 전달
  4. LLM (AutoGPT)에서 응답
  5. 음성 합성: 응답 결과를 읽어주기

간단한 자비스(JARVIS)가 됩니다. 토니 스타크의 자비스에 비하면 아직 한참 멀었지만, 점점 향상되고 있습니다.

페이퍼 학습법

페이퍼 학습법은 B4 용지에 공부할 내용을 정리한 후 여러 번 복습하는 공부 방법입니다. 제가 학부생 때 암기할 것이 많은 과목을 공부하며 요긴하게 사용했던 학습법입니다.

먼저 B4 용지를 준비합니다. B4 용지는 A4 용지보다 큽니다. B4 용지를 세로로 둔 상태에서 가로 세로 반씩 접었다가 폅니다. 가장 윗부분에는 제목 적을 부분을 약간 접었다가 폅니다. 그럼 아래와 같은 종이를 얻을 수 있습니다.

1행에 공부하는 주제를 적고 1열부터 아래로 차례대로 공부하며 채워갑니다. 공부한 내용을 정리해서 한 장을 앞뒤로 채우는 데 보통 몇 시간이 걸립니다. 공부하는 과목의 분량이 많으면 B4 용지가 여러 장 필요하겠죠. 이렇게 공부하는 과목을 다 정리했다면 이제 페이퍼를 이용해 빠르게 복습할 수 있습니다. 작게 접어서 볼 수 있기 때문에 등하교길 기차, 버스 안에서 또는 잠깐 잠깐 시간 날때 쉽게 복습할 수 있습니다.

단순한 방법이지만, 공부해야 할 내용 전체를 직접 손으로 써가며 정리할 수 있고, 빠르게 여러 번 복습할 수 있기 때문에 암기할 것이 많은 과목의 시험 준비에 좋습니다. 물론 제게 좋았다고 여러분에게도 좋다는 법은 없으니 한 번 시험해보고 자신에게 맞을 때 쓰면 되겠습니다.

숫자-압운 기억법

어떻게 공부할 것인가에서 새로 배운 것을 이전에 알고 있던 것과 연결하면 더 잘 기억할 수 있다고 했습니다. 숫자-압운 기억법은 숫자의 이름을 이용해 숫자를 이미지와 연결해 놓습니다. 외워야 할 목록이 있을 때 목록의 내용을 미리 만들어놓은 이미지와 연결시켜 외우면 쉽게 오래 외울 수 있습니다. 저는 암기해야 할 목록이 있을 경우 숫자-압운 기억법을 이용해 도움을 많이 받았습니다. 여러분도 이 기법을 미리 연습해 놓으면 시험 공부할 때나 외울 것이 있을 때 큰 도움이 될겁니다.

기본 이미지

숫자를 이미지와 연결하는 방법에는 여러 가지가 있는데, 제가 책에서 보고 사용한 방법을 소개해드리겠습니다. 숫자의 영어 이름과 발음이 유사한 단어의 이미지를 사용하는 방법입니다. 이미지를 사용하는 이유는 사람이 숫자나 글자보다는 이미지를 잘 기억하기 때문입니다. 아래 단어들을 보고 숫자 발음과 연결된 이미지를 상상해보세요. 새로운 목록을 외울 때마다 기준이 되는 이미지들입니다.

  1. One: Bun 번 빵
  2. Two: Shoe 신발
  3. Three: Tree 나무
  4. Four: Door 문
  5. Five: Hive 벌집
  6. Six: Sticks 막대기
  7. Seven: Heaven 천국
  8. Eight: Skate 스케이트
  9. Nine: Vine 포도나무
  10. Ten: Hen 암탉

암기할 목록

이제 다음의 목록을 외워야 한다고 해봅시다.

  1. 달팽이
  2. 병아리
  3. 고슴도치
  4. 수탉
  5. 깃털
  6. 깨진 달걀
  7. 둥지에 있는 세 개의 달걀
  8. 지렁이
  9. 토끼
  10. 애벌레
  11. 계란 프라이

입력하기

숫자-압운 기억법을 이용해 외워봅시다. 앞에서 만들어 놓은 이미지와 목록의 이미지를 결합해서 상상하면 됩니다. 이 때 구체적이고 특이한(비정상적인) 이미지가 기억하기 좋습니다. 그런데 목록에 12개의 항목이 있어 기본 이미지가 부족합니다. 이 때는 11번에서 20번까지는 얼음 속에서, 21번부터 30번까지는 불 속에서 있는 이미지와 같이 추가 환경을 상상하면 됩니다. 다음은 예시 이미지입니다.

  1. 빵과 달팽이가 함께 있는 이미지를 상상합니다 – 달팽이가 롤빵을 등껍질로 지니고 기어가는 이미지
  2. 신발에 들어간 병아리
  3. 고슴도치의 가시가 나무에 박힌 이미지
  4. 문을 뚫고 나오는, 큰 볏을 가진 수탉
  5. 깃털에서 꿀이 뚝뚝 떨어지는 이미지
  6. 깨진 달걀을 막대기로 더 깨는 이미지
  7. 둥지에 담긴 달걀이 천국으로 날아 올라가는 이미지
  8. 스케이트 날이 지렁이처럼 생겼네요
  9. 포도나무에 토끼가 열렸네요
  10. 암닭이 애벌레를 목도리로 사용합니다
  11. 계란 프라이를 싼 얼어붙은 햄버거 빵
  12. 얼음 신발에서 피어 나온 꽃

미리 연습을 해두면 새로운 목록이 주어졌을 때 기본 이미지와 결합해서 상상하고 외우는데 하나에 몇 초밖에 안 걸립니다.

출력하기

이미지를 상상해서 외웠으면 이제 임의의 순서대로 숫자 – 기본이미지 – 결합이미지 순서로 연상하며 출력할 수 있습니다.

  • 5번? 벌집: 꿀 – 깃털에서 꿀이 떨어지는 이미지 – 답: 깃털
  • 8번? 스케이트: 지렁이 스케이트 날 – 답: 지렁이
  • 2번? 신발: 병아리가 신발에 들어갔죠 – 답: 병아리
  • 12번? 얼음 + 신발: 얼음 신발에서 꽃이 피었습니다 – 답: 꽃

이런 식으로 임의의 순서로, 1번부터 12번까지 또는 역순으로도 외울 수 있습니다.

응용하기

사실 위의 목록은 ‘치킨 차차’ 보드게임에서 가지고 왔습니다. 자신의 말 앞에 있는 이미지를 뒤집힌 카드들 중에 찾아서 전진하는 게임인데, 상대방의 말을 잡으면 이기게 됩니다. 대학생 때 여자친구와 보드게임방에 가서 치킨 차차 게임을 한 적이 있습니다. 서로 이겼다가 졌다가 하면서 게임을 하다가 숫자-압운 기억법을 쓸 수 있겠다는 생각이 들었습니다. 그래서 다음번 게임할 때 12개의 뒤집힌 카드들에 속으로 번호를 매기고 하나씩 뒤집어보며 외웠습니다. 극적인 효과를 위해 일부러 하나도 안 맞추다가 한번에 모든 카드를 다 맞춰서 역전했습니다. 결과는? 완승. 여자친구 표정은? 당연히 안 좋았죠. 그 이후로 여러 사람들과 치킨 차차 게임을 해봤는데 한 번도 진 적이 없습니다. 단, 부작용도 있습니다. 사람들이 한 두 번 진 후에는 더이상 게임을 안 하려고 하죠.

숫자-압운 기억법을 적용하기 어려운 목록도 있습니다. 이미지가 유사한 목록(예 – 고등어, 삼치, 명태, 민어, 광어)은 헷갈릴 수 있습니다. 이미지로 만들기 어려운 목록은 다른 암기 방법을 찾아보세요(예 – 캄오실데석페트쥐백34).

시험 볼 때도 여러 번 사용했습니다. 여러분도 시험 때 외워야 할 목록이 있으면 숫자-압운 기억법을 적용해보세요.

어떻게 공부할 것인가?

평생 공부

앞으로 사람들은 평생 여러 개의 직업/직장을 가지게 될 것이고 그에 따라 평생 공부해야 할 것이라는 전망들이 많습니다. 대학생 때 배운 전공 지식만 가지고 평생 살아가기는 힘들다는 말입니다. 대학 전공은 첫 번째 직업/직장을 결정하는 역할로 축소될 수도 있습니다. 전공 지식 자체도 물론 중요하지만, 전공 공부를 하며 소프트스킬과 효율적으로 공부하는 방법(학습법)을 익혀두면 평생 도움이 될 것입니다.

효율적인 공부법

어떻게 공부할 것인가라는 책에 인지과학 분야에서 밝혀낸 효율적인 공부법(잘 기억할 수 있는 공부법)들이 안내되어 있습니다.

  • 노력: 쉽게 배운 지식보다 노력을 많이 들여 배운 지식이 더 깊고 오래 간다고 합니다.
  • 인출 연습: 단순히 읽기만 하는 것보다 배운 것을 떠올리는 연습을 하는 것이 더 효율적입니다. 시험 보는 것이 공부에 도움이 된다는 말입니다.
  • 생성 효과: 지식의 빈 부분을 채우기 위한 노력이 기억력을 강화합니다.
  • 반추: 새로 배운 것을 이전에 알고 있던 것과 연결하면 더 잘 기억할 수 있습니다.
  • 정교화: 생소한 내용을 자신의 언어로 표현하여 기존 지식과 연결하기
  • 시간 간격을 두고 복습하기, 교차연습: 망각이 일어날 만한 시간 간격을 두거나 두 가지 이상의 주제 번갈아 배우기
  • 심성 모형: 새로운 자료의 핵심 내용을 뽑아 심성 모형으로 만들고 사전 지식과 연결하기
  • 상위인지 (메타 인지): 무엇을 알고 무엇을 모르는지 자신의 생각을 지켜보기
  • 해법을 배우기 전 문제를 풀기 위해 애쓰기
  • 다양한 문제 유형에서 근본 원칙이나 규칙을 이끌어내기
  • 새로운 지식을 더 넓은 맥락에서 살펴보기

실천

알기만 해서는 별로 도움이 안 되고 의도적으로 연습해야 합니다. 앞으로 공부할 때 새로 배우는 내용을 자신의 말로 정리하고 이전에 알던 것과 관련지어 봅시다. 마인드맵을 이용하여 지식의 지도를 만들어 봅시다. 배운 후 자신이 아는 내용과 잘 모르겠는 내용을 생각해보고 부족한 부분을 채우기 위해 노력합시다. 공부할 때 한 과목을 다 본 후 다음 과목으로 넘어가는 것이 아니라 여러 과목을 번갈아가며 공부해 보세요.

평생 공부의 시대에 효율적인 공부법을 통해 시간을 절약하고 절약한 시간에 자신만의 옵션을 준비해보세요.

대학생의 자유로부터의 도피

책 – 자유로부터의 도피

에리히 프롬은 ‘자유로부터의 도피’에서 중세에서 근대로 오면서 사람들이 자유를 얻었을 때 어떻게 반응해왔는지 알려줍니다. 중세 사회는 사람들이 사회 체제 안에서 자신의 역할에 묶여 있는 사회였습니다. 자유가 없는 대신 소속감, 안전, 속박이 있는 사회였죠. 근대 자본주의 사회에서 사람들은 속박에서 해방되어 자유를 얻게 되었지만, 대신 소속감을 잃고 고립되어 불안해하는 경우가 많았습니다. 이러한 불안감으로부터 도피하기 위해 사람들은 크게 세 가지 방법을 선택했습니다.

  1. 권위주의: 자기 이외의 어떤 사람이나 사물에 의지하는 방법입니다.
  2. 파괴성: 어떤 대상을 파괴하는 행동입니다.
  3. 자동 인형적 순응: 자아를 상실하고 타인의 기대에 따라 살아가는 방법입니다.

세 가지 방법 모두 바람직한 방법은 아닙니다. 에리히 프롬이 제안한 대안은 소극적 자유로부터 적극적 자유로 나아가는 것입니다. 소극적 자유가 속박으로부터의 자유라면, 적극적 자유는 사랑과 일 속에서 자신의 능력을 발휘하며 바깥 세계와 자연스럽게 관계를 맺는 자유입니다.

대학생의 자유로부터의 도피

고등학생 때까지 별다른 자유 없이 공부만 하다가 대학에 들어온 학생들은 갑자기 대인관계, 수강신청, 동아리 등 다양한 선택의 자유를 얻게 됩니다. 하지만 자유에 따르는 책임, 취업, 진로, 인간관계의 어려움 등으로 인해 불안감이 생기죠. 에리히 프롬의 분류에 따른 대학생의 도피 방식은 다음과 같이 생각해볼 수 있습니다.

  1. 권위주의: 학교의 규칙, 교수나 멘토의 기대에 맞는 틀 안에서만 움직이는 방법입니다.
  2. 파괴성: 갈등이나 대인관계의 문제 등을 파괴적인 행동으로 해결하려고 시도합니다.
  3. 자동 인형적 순응: 사회의 기대에 맞추어 행동하고 자신의 개성 없이 트렌드나 패션을 맹목적으로 따릅니다.

바람직한 반응은 적극적 자유로 나아가는 것이죠.

  • 다른 사람의 기대에 따라 사는 것이 아니라 자신의 삶을 주도하겠다고 결심합시다.
  • 자신만의 고유한 가치를 긍정적으로 받아들여 자신만의 정체성을 찾아가시기 바랍니다.
  • 다양한 책을 읽으며 스스로 생각하는 힘을 키웁시다.
  • 삶의 의미를 찾아가며 존재하는 삶을 살아가시길 바랍니다.

이러한 과정에서 여러 어려움과 실패가 있겠지만 우리는 실패를 통해 배우고 성장할 수 있습니다.

시행착오를 통한 학습, 팅커링, 그리고 경사하강법

우리는 시행착오(Trial & Error)를 통해 배웁니다. 

팅커링(Tinkering)

팅커링은 혁신 수업 중 하나인 메이커 교육에서 많이 사용하는 단어입니다. 자유롭게 주어진 재료를 가지고 무엇인가를 만들거나 개선하며 창의적인 실험과 조작을 하는 과정입니다. 이것 저것 시도해보며 배우는 시행착오 과정이죠.

나심 탈레브도 안티프래질에서 팅커링에 대해 이야기했습니다. 책에서는 복잡한 시스템이나 현상을 이해하거나 개선하기 위한 작은 실험을 의미했죠. 팅커링은 손실은 작지만 커다란 이익을 얻을 수 있는 시행착오로, 옵션의 특성을 가지고 있습니다.

경사하강법

복잡한 시스템의 거동을 잘 모를 때 작은 실험을 통해 결과를 개선해가는 과정. 수치해석이나 머신러닝의 최적화 분야에서도 같은 방법을 사용합니다. 복잡한 시스템은 목적함수 또는 손실함수라 부릅니다. 우리가 바꿀 수 있는 것은 매개변수이고, 작은 실험은 현재 매개변수를 이용해 목적함수의 값과 기울기를 계산하는 과정이 됩니다. 계산한 값을 이용해 매개변수를 어떻게 개선해야 하는지에 대한 피드백을 얻고 매개변수를 개선하는 과정을 반복해가며 점점 향상된 결과를 얻게 됩니다.

이렇게 시행착오를 통해 결과를 개선해가는 과정에는 작은 실패와 성공들, 피드백들이 포함됩니다. 실패는 학습 과정의 일부분입니다. 실패에 낙심하지 말고 다시 시도합시다. 실패는 다시 하라는 뜻입니다.

시행착오를 통한 학습과 린 스타트업 방법론

우리는 시행착오(Trial & Error)를 통해 배웁니다. 린 스타트업 방법론은 시행착오를 통한 학습을 스타트업에 적용한 기법입니다. 

린 스타트업 방법론

창업가들은 소비자를 만족시키는 또는 소비자들의 문제를 해결해주는 상품이나 서비스를 통해 돈을 버는 사람들입니다. 이러한 상품이나 서비스를 개발할 때 린 제조 기법과 애자일 방법론에서 아이디어를 얻어 린 스타트업 방법론이 나왔습니다. 창업가들은 소비자들을 만족시키기 위해 다양한 가설을 세우고 시도합니다. 스타트업은 보통 회사 자금이 많지 않기 때문에 비용이 많이 드는 시도를 했다가 실패하면 망하기 쉽습니다. 그래서 최종 목표는 높게 잡더라도 각각의 시도는 작게 만들 필요가 있죠. 작은 시도를 여러 번 할 수 있도록 우선 최소 기능 제품(Minimum Viable Product)부터 내놓습니다. 이후 제품을 가지고 소비자로부터 피드백을 받아 빨리 배우며(유효한 학습) 제품을 개선하는 과정을 계속 반복합니다.

  1. 문제: 소비자 만족
  2. 여러 가지 가설 시도: 최소 기능 제품부터 시작해 조금씩 개선된 상품/서비스 자주 출시
  3. 실패한 해결책 제거: 피드백을 통해 학습하며 소비자 불만 제거 (2, 3 단계 반복)

시행착오를 통한 학습과 같은 과정을 거치죠. 창업가들도 시행착오를 통해 배웁니다.

시행착오를 통한 학습과 애자일 방법론

우리는 시행착오(Trial & Error)를 통해 배웁니다. 애자일 방법론은 시행착오를 통한 학습을 프로그램 개발에 적용한 기법입니다.

폭포수 방법론

프로그래밍 분야에서 예전부터 사용하던 폭포수 방법론에서는 프로그램 설계 – 구현 – 배포 (단순화했습니다) 단계가 순차적으로 진행됩니다. 설계가 끝나면 구현을 시작하고, 구현이 끝나면 배포하는 방식이지요. 구현이 끝나야 최종 결과물이 나오기 때문에 결과물을 얻는데 소요되는 기간이 길어지게 됩니다. 그래서 예전에는 소프트웨어가 1년에 한 번 정도씩 업데이트되어 나왔죠. 최종 결과물이 소비자 마음에 안 든다면? 피드백을 받아 개선해서 새 제품을 내놓는데 또 오랜 시간이 걸립니다. 소비자들의 요구 사항이 빠르게 변하는 세상, 불확실성이 큰 세상에서는 적절치 못한 방법이죠.

애자일 방법론

그래서 애자일 방법론이 나왔습니다. 애자일 방법론에서는 설계 – 구현 – 배포로 이어지는 개발 주기(피드백 고리)를 몇 주 정도로 짧게 잡습니다. 전체 기능을 작은 부분들로 나눠서 중요한 것부터 구현해갑니다. 핵심 기능부터 시작해서 점점 개선해가는데, 완제품이 나오기 전부터 소비자들에게 배포해서 빠르게 피드백을 수집하고 반영합니다. 그래서 요즘 프로그램들 중에는 몇 주 또는 몇 달 간격으로 새로운 버전이 나오는 경우가 많죠.

  1. 문제: 소비자 만족
  2. 여러 가지 가설 시도: 조금씩 개선된 버전 자주 출시
  3. 실패한 해결책 제거: 피드백을 통해 소비자 불만 제거 (2, 3 단계 반복)

각각의 버전들(작은 시도들)이 소비자 만족이라는 문제를 해결하기 위한 가설이 됩니다. 여러 시도들로부터 빠르게 피드백을 받아 프로그램을 개선해갑니다. 소비자를 만족시킬 완벽한 해결책은 존재하지 않을지 모르지만, 이러한 과정을 통해 쓸만한 해결책에 점점 가까워집니다. 개발자들도 시행착오를 통해 배웁니다.

시행착오를 통한 학습과 과학적 방법론

우리는 시행착오(Trial & Error)를 통해 배웁니다.

칼 포퍼는 시행착오를 통한 학습의 3단계 모델과 과학적 방법론 4단계 모델에 대해 설명했습니다.

시행착오를 통한 학습의 3단계 모델

  1. (답이 알려지지 않은) 문제
  2. 여러 가지 해결책들(가설) 시도
  3. 실패한 해결책 제거(2, 3단계 반복)

여러 가지 가설들 중 하나가 문제 해결에 성공하면 이를 통해 성공적인 해결책을 배우게 됩니다.

과학적 방법론 4단계 모델

  1. 기존 문제
  2. 잠정적 이론들(가설) 세우기
  3. 실험적 검증을 포함하여 비판적 논의를 통한 제거 시도들(실패한 해결책 제거)
  4. 이론들의 비판적 논의에서 도출되는 새로운 문제들

과학적 방법론도 기본 틀은 시행착오를 통한 학습과 같습니다. 문제가 있을 때 여러 가지 가설들을 세우고 하나씩 시도해봅니다. 시도하면서 피드백도 얻습니다. 문제가 해결되지 않으면 다음 가설로 넘어가는 과정을 반복하다가 성공적인 가설을 찾으면 문제 해결책을 배우게 됩니다.

간단한 방법이지만 과학 분야 뿐 아니라 불확실성이 큰 다양한 분야에서 시행착오를 통해 배우며 전진해 나갑니다. 이 때 주의해야 할 점은 가설이 실패하더라도 피드백을 통해 배워야 한다는 점, 실패했을 때 입는 피해가 크지 않도록 해야 한다는 것입니다. 빠른 피드백은 의식적인 연습에서도 중요한 요소입니다. 실패했을 때의 리스크가 크지 않고 성공했을 때의 보상이 크다면 좋은 옵션이 될 수도 있습니다.

혁신 수업의 숨겨진 메시지

  • 미디어 = 학교 수업
  • 메시지 = 전공 지식

미디어는 메시지를 전달하는 도구입니다. 학교 수업이 미디어라면 전공 지식은 메시지에 해당합니다. 미디어의 이해에서 말하는 것처럼, 미디어는 공개적으로 메시지를 전달하지만, 비공개적으로 미디어 자체의 메시지도 전달합니다. 수업에는 어떤 메시지가 숨어 있을까요? 숨겨진 메시지는 수업 방식에 따라 달라지게 됩니다.

가장 일반적인 수업 방식은 강의식 수업입니다. 최근에는 플립러닝, 프로젝트 기반 학습, 문제 기반 학습, 액션 러닝, 메이커 교육, 팀 티칭… 등등 다양한 혁신 수업들이 늘어나고 있죠.

강의식 수업은 ‘무대 위의 현자’ 모델을 따릅니다. 학생은 모르는 내용을 전문가인 선생님에게 배웁니다. 여기에는 전문가의 전공 지식이 중요하다는 메시지가 숨어있는 셈이죠.

혁신 수업들은 강의식 수업도 포함하지만 학생들의 적극적 활동에 좀 더 중점을 두고 있습니다. 능동적으로 배울 때 더 잘 배울 수 있다는 연구 결과도 반영되어 있겠죠. 학생들이 주인공으로 활동하는 동안 선생님은 옆에서 돕는 사람이 됩니다. 조별 활동, 토론, 실습 등의 활동을 통해 전공 지식도 전달하지만, 여기에는 학생들의 의사소통 능력, 협동, 창의력, 비판적 사고 능력 등을 향상시키고자 하는 숨은(?) 의도가 있습니다.

  • 하드스킬 = 전공 지식
  • 소프트스킬 = 의사소통, 협동, 창의력, 비판적 사고력 등

전공 지식은 하드스킬과 관련이 있습니다. 하드스킬과 대비되는 소프트스킬에는 앞에서 이야기한 의사소통 능력, 협동 능력, 창의력, 비판적 사고 등이 있습니다. 교육 전문가 Fullan은 소프트스킬로 6C를 이야기했습니다(Character, Citizenship, Collaboration, Communication, Creativity, Critical thinking).

  • 강의식 수업 = 하드스킬 강조
  • 혁신 수업 = 소프트스킬도 강조

어떤 방식이 맞고 어떤 방식이 틀렸다고 할 수는 없습니다. 혁신 수업이 늘고 있다는 것은 사회에서 이러한 소프트스킬의 중요성이 점점 커지고 있다, 또는 교육계에서 소프트스킬의 중요성을 깨닫게 되었다는 것을 의미한다고 볼 수 있겠죠.

소프트스킬 향상을 위해서는 학생들의 능동적인 참여가 중요합니다. 가만히 앉아서 듣는 것보다는 노력이 더 필요합니다. 대신 졸음은 덜 올겁니다^^ 코로나 이후 플립러닝 수업에서 학생들의 참여도가 떨어져 지난 학기 수업에서 강의의 비중을 늘렸었는데, 앞으로 점차 나아질 것이라 기대합니다!