day 003 KPMG Future Academy

sottuggung·2024년 11월 22일
0

KPMG-future-academy

목록 보기
3/41

KPMG Future Academy AI 활용 데이터 분석가 3기 3일차 수업을 2024년 11월 20일에 참석했다. 오전에는 다 같이 기업에서 최신 기술을 적용한 사례를 분석해보기로 했다.

  1. 산업 관련 AI
    1.1. 산업용 AI
    1.2. 산업용 AI 팀별 조사
  2. 파이썬 실습
    2.1. 파이썬 API
    2.2. 포맷팅
    2.3. 평균 구하기
    2.4. 정렬
  3. 부록
    3.1. 8진법
    3.2. 객체, 속성과 값
    3.3. 점 표기법
    3.4. 파이썬 표기법

1. 산업 관련 AI

1.1. 산업용 AI

[CES 2024]
이번 CES에서는 로레알에서 기조연설을 했고, 빛으로 머리를 말리는 헤어드라이어를 소개했다. 또 카트리지 방식으로 머리를 염색하는 기기나 손떨림 방지 립스틱 등을 소개했다.

[미래형 탈 것]
또한 내년부터 서울에서 도심 K-UAM(드론) 도심항공이 시범사업을 시작하고 거점 기반 버티포트(정류장)도 개설한다고 한다.

많은 기업이 자율주행에 용이한 전기차량 생산으로 대거 전환하고 있으며, UAM 개발사 JOBY, 리저널 여객기 개발사 Zunum Aero 등 선구적인 기업에서 전기 항공기를 개발해오고 있다.

*Zunum Aero : https://www.electimes.com/news/articleView.html?idxno=220399

*eVTOL (구 UAM) : 일반적으로 드론으로 알려진 수직이착륙기
기타 : 속도에 따라 서로 다른 항공방식으로 개발 및 운영됨

*인간 안전 : 군사력 위주의 전통적인 국가 안보 개념에서 벗어나 인간의 생명과 존엄을 중시하는 안보의 새로운 패러다임이다. 유엔 개발 계획의 1994년 인간 개발 보고서에서 처음 제시되었으며, '공포로부터의 자유'와 '결핍으로부터의 자유'를 초점으로 삼고 있다.
출처 : https://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B0%84_%EC%95%88%EC%A0%84

*DX/AX

*빅카인즈 - 뉴스 분석 : https://www.bigkinds.or.kr/
시스코의 '지능형 와이파이' 키워드 검색 결과와 '클라우드 연결성' 키워드 검색 결과를 조회했으나 기사가 많지 않았다.

*GTC 2024 : TBD

*FME (software) : https://fme.safe.com/ safe software - zapier와 유사한 서비스로 보임.

*캐즘(Chasm)

*SDV (Software Defined Vehicle)는 소프트웨어로 하드웨어를 제어하고 관리하는 자동차

*넷제로 : 대기 중 온실가스 농도 증가를 막기 위해 인간 활동에 의한 배출량을 감소시키고, 흡수량을 증대하여 순배출량이 '0'이 되는 것을 탄소중립 혹은 '넷제로(Net-Zero)'라고 함.

*NPU : AI가속기. Neural Processing Unit.

CES 2024 책을 읽었다.

*이미지 생성 모델 zen3, 드림머신 및 어도비 Firefly 영상 생성 저작권 문제에 대해 언급되었다.

장 보드리야르의 시뮬라크르, 시뮬라시옹 개념이 떠오르는 기술도입 사례였다.

Le simulacre n'est jamais ce qui cache la vérité – c'est la vérité qui cache qu'il n'y en a pas. Le simulacre est vrai.

Jean Baudrillard, Simulacra and Simulation (1981)

시뮬라크르란 결코 진실을 감추는 것이 아니다. 진실이야말로 아무것도 존재하지 않는다는 사실을 숨긴다. 시뮬라크르는 참된 것이다.

하태환 역, 민음사

*시뮬라크르 : 원본도 사실성도 없는 실재, 즉 파생 실재(hyperréel)
*시뮬라시옹 : 시뮬라크르의 동사형

1.2. 산업용 AI 팀별 조사

수강생 전원과 각자의 관심사에 따라 선별적으로 특정 기업들의 AI 도입 사례를 분석해서 토론하는 시간을 가졌다.

  1. 관심있는 산업, 기업에서 어떻게 인공지능을 활용하는지 찾아보기
  2. 각 기업에 DX를 위한 AI 도입 방안을 생각해보고 발표하기

[팀 혹은 개인 조사 결과]
: https://padlet.com/lupy0612/ai-e58meoyggn82zpzk

나는 'AI 할루시네이션'을 조사하였다.

[엔비디아 AI 기술 활용 사례]

  1. AI 활용 분야 : IT
    엔비디아는 자사의 AI 할루시네이션(환각) 문제가 5년 내 해결될 것이라고 예측.

  2. 구체적인 사례 설명
    엔비디아가 사용한 주요 방법들:
    1) NeMo Guardrails 시스템

  • AI 모델의 출력을 실시간으로 모니터링하고 검증.
  • 사전에 정의된 규칙과 가이드라인을 기반으로 응답 필터링.
  • 신뢰할 수 있는 외부 데이터베이스와 연동하여 정보 검증.

2) 검색 증강 생성(RAG, Retrieval-Augmented Generation)

  • AI가 응답할 때 학습 데이터 외부의 신뢰할 수 있는 문서나 데이터베이스를 참조.
  • 실제 데이터에 기반한 응답 생성으로 정확도 향상.

3) 자체 검증 메커니즘

  • AI가 생성한 답변의 신뢰도를 자체적으로 평가.
  • 불확실한 정보에 대해서는 명확히 표시.

4) 지속적인 모델 업데이트와 재학습

  • 오류가 발견된 부분에 대한 피드백을 반영.
  • 더 정확한 데이터셋으로 모델 재훈련.
  1. 관련 자료 및 링크
    GatorTronGPT를 사용해 200억 단어 규모의 합성 임상 텍스트를 생성.
    https://developer.nvidia.com/blog/develop-secure-reliable-medical-apps-with-rag-and-nvidia-nemo-guardrails/

  2. 의견 및 분석
    데이터 신뢰성을 검증하는 전통적인 이론 내에 머물고 있는 것으로 보임. NeMo Guardrails의 경우, 1) YAML 파일을 통해 규칙(guardrails) 정의, 2) 파이썬 API를 통한 통합, 3) 다양한 LLM과 호환 가능한 방식을 차용.

다만 방식 상에서 AI Training AI: GatorTronGPT을 활용.

NeMo T5-TTS 모델에서는 LLM 기반의 향상된 음성 합성 기술 및 기존 오픈소스 모델들(Bark, SpeechT5)보다 2배 적은 발음 오류율을 달성하였는데, 1) 단조로운 정렬 사전 지식(monotonic alignment prior) 적용, 2) CTC(connectionist temporal classification) 손실 함수 사용, 3) 텍스트와 음성 간의 더 정확한 정렬 구현을 통해 할루시네이션 문제를 해결 시도하였음.

*NeMo Guardrails
개발자는 네모 가드레일을 통해 세 가지 종류의 경계를 설정할 수 있음:

  1. 토피컬 가드레일(Topical guardrails)은 앱이 원치 않는 영역으로 이탈하는 것을 방지한다. 예를 들어, 고객 서비스 도우미가 날씨에 대한 질문에는 답변하지 못하도록 방지한다.

  2. 세이프티 가드레일(Safety guardrails)은 앱이 정확하고 적절한 정보로 응답하도록 보장한다. 원치 않는 언어를 필터링하고 신뢰할 수 있는 출처만 언급하도록 강제할 수 있다.

  3. 시큐리티 가드레일(Security guardrails)은 앱이 안전한 것으로 알려진 외부 서드파티 애플리케이션에만 연결하도록 제한한다.

2. 파이썬 실습

오후에는 파이썬 실습을 진행했다.

2.1. 파이썬 API

[파이썬 API]
tracemalloc 모듈 :
파이썬이 할당한 메모리 블록을 추적하는 디버그 도구.

pymalloc 할당자 :
Python은 수명이 짧은 작은 객체(512 바이트 이하)에 최적화된 pymalloc 할당자를 가지고 있다. 이는 32비트 플랫폼에서는 256 KiB, 64비트 플랫폼에서는 1 MiB의 고정 크기를 가진 "아레나"라고 하는 메모리 매핑을 사용한다. 512 바이트보다 큰 할당의 경우 PyMem_RawMalloc()과 PyMem_RawRealloc()으로 대체된다.

2.2. 포맷팅

[포맷팅]
문자열에 변수나 값 포함시킬 때 사용.
%s : 문자열(String)
%c : 문자 1개(character)
%d : 정수(Integer)
%f : 부동소수(floating-point)


[.format 메소드에서 매개변수 적용하는 방법]
1. 위치(인덱스) 사용:

print('이름:{0}, 과목:{1}, 점수:{2}'.format('홍길동', '수학', 85))

2. 이름(키워드) 사용:
print('이름:{name}, 과목:{subject}, 점수:{score}'.format(name='홍길동', subject='수학', score=85))

3. 변수 사용:
name = '홍길동'
subject = '수학'
score = 85
print('이름:{}, 과목:{}, 점수:{}'.format(name, subject, score))




4. 딕셔너리 사용:

student = {'name': '홍길동', 'subject': '수학', 'score': 85}
print('이름:{name}, 과목:{subject}, 점수:{score}'.format(**student))




5. f-string 사용 (Python 3.6+):

name = '홍길동'
subject = '수학'
score = 85
print(f'이름:{name}, 과목:{subject}, 점수:{score}')

[자료구조 합성 예제]

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class Stack:
    def __init__(self):
        self.items = []  # 리스트를 활용한 스택 구현
    
    def push(self, item):
        self.items.append(item)
    
    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        return None
    
    def is_empty(self):
        return len(self.items) == 0

class Queue:
    def __init__(self):
        self.items = []  # 리스트를 활용한 큐 구현
    
    def enqueue(self, item):
        self.items.append(item)
    
    def dequeue(self):
        if not self.is_empty():
            return self.items.pop(0)
        return None
    
    def is_empty(self):
        return len(self.items) == 0

class CompositeDataStructure:
    def __init__(self):
        self.stack = Stack()  # 스택 합성
        self.queue = Queue()  # 큐 합성
        self.current_node = None  # 노드 합성
    
    def add_to_stack(self, item):
        self.stack.push(item)
    
    def add_to_queue(self, item):
        self.queue.enqueue(item)
    
    def process_data(self):
        # 스택과 큐의 데이터를 함께 처리하는 예제
        while not self.stack.is_empty() and not self.queue.is_empty():
            stack_item = self.stack.pop()
            queue_item = self.queue.dequeue()
            print(f"처리: 스택 항목 {stack_item}, 큐 항목 {queue_item}")
    
    def create_node(self, data):
        self.current_node = Node(data)

# 사용 예제
composite = CompositeDataStructure()

# 데이터 추가
composite.add_to_stack(1)
composite.add_to_stack(2)
composite.add_to_stack(3)

composite.add_to_queue("A")
composite.add_to_queue("B")
composite.add_to_queue("C")

composite.create_node("시작 노드")

2.3. 평균 구하기

[평균 구해보기]
1. 리스트

  1. NumPy

[Average와 Mean의 차이]

  • Average : arithmetic mean. 주어진 샘플 값들을 모두 더하고 샘플의 총 개수로 나눈 값.
  • Mean : 샘플 값의 average를 설명하는 수학적 용어. 주어진 데이터 세트에서 가장 작은 값과 가장 큰 값의 합을 2로 나눈 값.

2.4. 정렬

[소수점 자릿수 제한]

[정렬]

문자열 채워서 정렬

3. 부록

3.1. 8진법

[부록 : 8진법 등]

3.2. 객체, 속성과 값

[객체란?]
객체는 데이터의 집합: 객체는 클래스에서 정의된 속성(데이터)을 가지고 있는 메모리 상의 공간

[질의응답]
Q. 속성 중에 변수가 없이 값만 가지는 속성도 있나요?

Q. 객체는 속성 외의 데이터도 갖고있나요?

Q. 속성과 값의 차이
속성(Attribute)이란?
객체의 특징: 객체가 가지고 있는 고유한 특징이나 성질을 나타냄
변수와 유사: 파이썬 클래스 내부에서 정의된 변수
예시: 사람 객체의 경우, 이름, 나이, 성별 등이 속성이 될 수 있음
접근 방법: 객체 이름 뒤에 점(.)을 찍고 속성 이름을 적어 접근함 (예: person.name)

값(Value)이란?
속성에 할당된 데이터: 속성이 가리키는 실제 데이터
다양한 자료형: 숫자, 문자열, 리스트, 딕셔너리 등 파이썬에서 사용되는 모든 자료형이 될 수 있음
예시: 사람 객체의 이름 속성의 값은 "홍길동"이 될 수 있음

속성과 값의 관계
속성은 값을 담는 그릇: 속성은 값을 저장하기 위한 공간이며, 값은 속성에 할당되어 그 의미를 완성함
동적 변경: 값은 프로그램 실행 중에 변경될 수 있음. 예를 들어, 사람 객체의 나이 속성의 값은 시간이 지남에 따라 변할 수 있음

예시 코드

class Person:
    def __init__(self, name, age):
        self.name = name  # 속성 name에 값 할당
        self.age = age  # 속성 age에 값 할당

# 객체 생성
person1 = Person("홍길동", 30)

# 속성 값 출력
print(person1.name)  # 출력: 홍길동
print(person1.age)   # 출력: 30

# 값 변경
person1.age = 31
print(person1.age)   # 출력: 31

코드를 사용할 때는 주의가 필요

정리

  • 속성: 객체의 특징을 나타내는 변수
  • 값: 속성에 할당된 실제 데이터
  • 관계: 속성은 값을 저장하고, 값은 속성의 의미를 완성
    핵심: 속성은 객체의 고유한 식별자이고, 값은 그 식별자에 대한 구체적인 정보를 제공. 이 둘의 조합을 통해 객체는 다양한 상태와 행위를 표현할 수 있음

추가 설명

  • 클래스 변수 vs. 인스턴스 변수: 클래스 변수는 모든 인스턴스가 공유하는 값이고, 인스턴스 변수는 각 인스턴스마다 다른 값을 가질 수 있음
  • 프로퍼티: 속성에 대한 접근을 제어하고 값의 유효성을 검증하는 데 사용되는 메커니즘

3.3. 점 표기법

[점 표기법(dot notations)]
갯수 제한은 없음.
용도

1. Accessing Methods of Nested Objects:
class OuterClass:
    def __init__(self):
        self.inner_object = InnerClass()

class InnerClass:
    def inner_method(self):
        print("Inner method called")

outer_obj = OuterClass()
outer_obj.inner_object.inner_method()  # Two dot notations
  1. Accessing Functions from Imported Modules:
import module1.module2.function3

module1.module2.function3()  # Three dot notations
  1. Chaining Method Calls:
result = my_object.method1().method2().method3()  # Multiple dot notations

3.4. 파이썬 표기법

[파이썬 표기법 (notations)]
1. Def Notation:

def my_function(arg1, arg2):
    # Function body
    return result
  1. Lambda Notation (Anonymous Functions):
my_lambda = lambda arg1, arg2: arg1 + arg2

*주의사항

  • Higher-order functions can take functions as arguments or return them as results, offering more flexibility in function definition and usage.
  • Decorator functions can modify the behavior of other functions using syntactic sugar.

이하 별첨부록.

공부 중 인증화면이 나왔는데, 과연 멧돼지가 저 정도로 높이 뛰는지 궁금해져서 아래 인증화면을 저장하였음.

찾아보니, 대략 1.5m 담장도 넘을 수 있는 것으로 확인됨. 아래 이미지는 멧돼지가 담벼락 창살을 피해 2중 점프를 하는 모습.

profile
hello world

0개의 댓글