반응형

LG디스플레이에 대한 후기글은 많았지만, 대부분이 R&D패널이거나 제조직군 쪽이였습니다.

저는 2022년 상반기 채용에서 R&D분야의 '회로/알고리즘' 직무에 지원을 했고, 이 중 알고리즘을 타겟으로 준비하여 합격했습니다. 현직자 찾기도 힘들었고, 소수규모인 점을 고려해서 정보 찾기가 많이 힘들었었습니다. 앞으로 알고리즘파트를 지원하시는 분들께 도움이 될 글이 되었으면 하는 바람으로 후기 남깁니다.

  • 서류

-  서류는 3월 4일 ~ 3월 20일동안 접수를 받았고 3월 31일 (목) 오후 2시반쯤 발표했었습니다. 이번 자소서 문항은

2항목이였고, 둘다 1000자 이내로 작성이었습니다.

 

첫번째 항목 : 지원 직무와 관련된 수강 과목 및 경험을 간략하게 기술하여 주시기 바랍니다.

두번째 항목 : 지원 직무 수행과 연계한 본인만의 경쟁력 및 강점을 기술하여 주시기 바랍니다.

 

첫번째 항목은 150자만 쓰고 합격하신분도 있었습니다. 정말, 수강 과목과 받은 학점만 나열하신분들도 많았는데 그런 분들도 서류 통과한거보면 사실상 두번째 항목만 심혈을 기울여서 쓰면 되기에 자소서 부담 자체는 크지 않았던거 같습니다.

저는 컴퓨터공학이 아니였기에, 프로그래밍 관련 과목은 거의 없었습니다. 있어도 1~2과목이 다였어서, 프로젝트 얘기를 적었었습니다. 주제는 '딥러닝 기반 데이터분석 모델을 통해 입시 결과 예측' 이었습니다. 970자 정도 작성했었습니다.

 

두번째 항목은 제가 LGD 지원당시 외국계에서 Test엔지니어로 재직 중이었고, 현업에서 쓰고 있던 C++경험을 적었습니다. 나중에 안 사실이지만 제가 재직했던 회사에서의 경험이  LGD의 '검사 알고리즘' 팀에서 하는 일과 유사한 부분이 어느정도 있어서 점수를 받았다 생각합니다. 글자 수는 992자 정도 작성했었습니다.

 

당시 회로/알고리즘 팀의 채용규모는 00명이었고, 다른 두자릿수 채용 규모보다는 좀 더 많은 인원을 뽑았다 생각합니다. 회로팀 + 알고리즘 팀 이렇게 같이 묶은거였기 때문이기도 하고, 21년 하반기 때 회로팀만해도 채용규모가 000명이라고 들었어서 적진않았던거 같아요.

 

아무튼, 저는 회로/알고리즘으로 쓰되 자소서 내용은 모두 C++,Python만 언급했었습니다.

2차면접 탈이셨던 분들은 서류에서 필터링 당하는 경우가 꽤 있던거 같은데, 서합하신분들도 많았습니다.

아마, 복붙하면 탈인거 같습니다. 그리고 체감상 이번 채용에서는 서류에서도 꽤 탈락했다 라는 말을 자주 본듯 합니다.

(자소설닷컴, 주변 지인, LGD 오픈톡방을 근거하여)

 

  • 인적성

서류합격 3월 31일 이후로, 인적성은 4월 8일,9일,10일 동안 진행했었습니다.  8일은 Staff직군 / 9일은 제조&DX / 10일은 R&D였습니다. 필자는 10일에 응시했었습니다.  인적성 합격발표는 4월 18일날 오후4시에 발표했습니다. 

 

이 때, LGD는 기존의 응시이력을 재활용하지 않았고 모든 지원자가 다시 봐야한다고 안내했었습니다. 기존에 저는 LG이노텍 인적성을 합격한 상태였어서 아쉽긴 했지만 인성을 어떻게 찍는지만 안다면 어려울 건 없다 생각합니다.

 

정말, 많은 분들이 제 네이버 블로그를 통해서도 질문주셨고  자소설닷컴이나 오픈채팅방에서도 꾸준히 나오는 질문.

적성 vs 인성인데요. 적성은 진짜 우주 끝까지 망쳐버려도 상관없습니다. 인성의 비중이 99%라고 감히 장담합니다.

LG디스플레이에서 원하는 인성적인 면은 꽤나 뚜렷한 편입니다.

제가 정답은 아니겠지만, 나름 여러번의 시행착오를 겪어와본 결론으로는 책임감이 있는 사람을 굉장히 중요시 여깁니다.

유독 LG이노텍과 LG디스플레이에서만 인성탈이 굉장히 많이 보였고 타계열사는 합격하시는 분들이 있었습니다.

제가 이분들이 어떻게 찍었는지는 몰라도 감히 유추하건대, 책임감부분 점수를 보통이다(4)~ 약간 그렇다(5) 수준으로 주셨을겁니다.

 

LG디스플레이의 인성검사는 분명히 원하는 답이 있는 지문들이 있습니다. 저는 그게 책임감, 협업 이 2가지라고 생각합니다.

 

EX1) 나는 내가 맡은 일을 무슨 일이 있어도 반드시 해결하고자 하는 편이다.

EX2) 나는 루틴한 업무보다는 창의성이 요구되는 일에 더 뛰어난 편이다.

EX3) 나는 어려운 일을 맡을 때 얻는 성취감이 쉬운 업무를 해결할 때보다 더 좋다.

 

이렇게 있다 가정하겠습니다. 대략 1번은 책임감 / 2번은 창의성 / 3번은 도전정신입니다.

제 기준은 책임감 >= 협업 (7점) > 도전정신 >= 배움의 자세 (6점) 이렇게 두었습니다. 그리고 나머지는 다 솔직하게 찍었고, 조직융화성이 나빠보이는 지문들. 예를 들면,  '나는 화가 나면 주체할 수 없다.' / '나는 자주 우울함을 느낀다.'  이거는 항상 2점을 두었습니다. 1점은 사람이 아니라 기계라 생각해요. 살면서 한번쯤은 정말 화나거나 슬플 때도 있으니까요.

 

* 협업 = 커뮤니케이션 = 의사소통으로 보시면 됩니다.

* 잡플랫 모의검사를 하시는 분들도 상당히 많았는데요. 그거 위험등급 아니면 상관없습니다. 부족등급 떠도 실제에선 붙는 분들 많습니다.

 

이번 22 상반기 LGD채용에서는 인적성에서 가장 많이 떨어진 듯한 모습이었습니다. 당시, 제가 LGD톡방에 있을 때,

인적성 발표 전에는 900명이었는데  인적성 발표가 난 뒤로 690명정도만 남았었습니다. 대략 1/4정도가 탈락 한것입니다.

LG인적성은 웬만하면 붙는다 말과는 다소 거리가 있던 결과였었어요.

 

  • 웨비나 전형

참석만 하면 다 붙여주는 전형이었습니다. 말 그대로 웹+세미나였고 대략 7시간동안 진행합니다. 오전/오후 나눠서 출석체크를 진행했고 출석체크를 안할 시, 불합격까진 아니지만 불이익이 있다는 안내를 받았습니다.

출첵은 QR코드로 진행합니다. (진행 날짜 4월 29일)

 

개인적으로 굉장히 유익했었습니다. 알고리즘 직무 특성상 현직자 찾기가 정말정말 힘들었었는데, LGD에서 현직자를 직접 연결해줘서 뭐하는 직무이고, 뭐가 필요한지 등등 자세히 설명을 들을 수 있었기 때문입니다. 이 때, 회로알고리즘 웨비나 대기실은 대략 230명정도가 들어왔었습니다. 옆동네 패널설계 직무는 250명정도가 들어왔었는데 티오가 000명이였던거 고려하면  패설은 면접 경쟁률이 대략 2대1 / 회로알고리즘은 대략 4대1 정도로 유추할 수 있었습니다.

 

저는 이 날 한 3번 질문 드렸던거 같고, 결과적으로 정보를 많이 얻어서 면접에서도 도움이 되었던거 같습니다. 

앞으로도 진행할 전형이라 하셨으니 이 글을 통해서 참고가 되길 바랍니다.

 

  • 원데이 면접 (인성+직무)

인성을 먼저볼지, 직무를 먼저볼지는 LGD에서 정해줍니다. 이 때, 원데이 면접은 4월 30일 ~ 5월 15일이였고  저는 앞타임이었습니다. 회로/알고리즘 직무분들은 대부분 첫 주에 진행한듯 합니다.

 

(직무 PT문제 유출은 엄격히 금지되어있습니다. 비밀댓글로 질문은 삼가주시면 좋겠습니다!!)

A. 직무PT면접

직무PT는 정말 케바케입니다. 여러분들이 공부하는데 참고하셨을 디스플레이 톺아보기 / D군의 디스플레이에서 찾아볼 수 있는 수준이기도 하고, 깊이 알아야 풀 수 있는 문제 등등 다양하게 나옵니다. 저는 운이 나쁘게도 어렵게 나왔었습니다.

 

학사기준 직무PT면접은 총 80분입니다. 40분은 풀이시간을 주고, 40분은 발표하는 시간입니다.

다만, 저는 혼자서 봤기에, 발표시간은 딱 20분만 채웠습니다.

 

Q. 그래서 잘 보셨나요?

A. 직무면접은 정말 5대5 수준으로 봤습니다. 잘보진 않았는데, 그렇다고 못보지도 않았습니다. PT면접을 풀이하고 나서 꼬리질문이 들어왔었는데요. 두번째 꼬리질문에서 깊게 물어보셔가지고, 답을 못했었습니다.

 

지금은 합격했으니까, 느낀건데 모르는거는 억지로 답하지않아도 됩니다. 모르면 잘 모르겠다, 공부 따로 더해보겠다. 라고 하는게 깔끔하고 다음 질문을 통해 만회할 기회를 줍니다.

 

저 같은 경우는 PT관련 질문은 잘 못했습니다. 다만, 자소서 및 성적표 기반으로 들어오는 질문들은 잘 답변했었습니다.

그래서 정말 5대5라고 생각했었습니다. 

 

질문은 9개정도 들어왔었습니다.

3개는 PT관련 질문 (여기서 대답 하나는 아예 못했고, 다른 하나는 표정을 보아하니 만족스럽진 않으셨던듯 합니다.)

1개는 직무 관련 기초 지식 질문 (이건 끝나고나서 검색해보니 완벽한 답안은 아니였었는데, 가벼운 칭찬을 받았었습니다.)

3개는 자소서 및 성적표 기반 질문이었습니다. (이건 답변 잘 했습니다.)

1개는 인성 질문

나머지 1개는 마지막 할말 이었습니다.

 

 

B. 인성면접

단언컨대, 제가 이번 채용에서 합격한 이유는 인성면접 때문이라 생각합니다. 지금껏 꽤나 많은 면접기회를 가졌었는데 그 중에서 가장 잘본 인성면접을 묻는다면 LG디스플레이라고 답할 수 있을 것 같았습니다. 

면접이 끝나고 난 뒤, 직무가 중요하냐 vs 인성이 중요하냐  이거로 많이 토론이 열렸었는데

제 사견으로는 둘다 무난했다면 인성이 더 중요하지 않을까 싶습니다.

https://blog.naver.com/twonkang00/222720682475

 

LGD 인성면접 복기

+ 6월 3일. 합격발표 후, 비공개에서 공개로 돌립니다. 직무면접은 PT내용이 있기에 비공개로 그대로 유...

blog.naver.com

 네이버 블로그에 포스팅했던 인성면접 복기본입니다. 직무면접은 PT문제가 포함되어있기에 복기하지 않았습니다.

 

* 직무면접관과 인성면접관은 같을수도 다를수도 있는데  대체로 다른듯 합니다. 인성면접에서는 사회자 역할을 하시는 인사팀 분이 계시는데  질문 횟수를 따지자면 상당히 많으셨었습니다. 

제 사견으로는 인사팀분은 많이 젊어보이셨고, 점수를 직접적으로 매기기보다는 질문을 정리해서 저한테 전달하면, 제가 하는 답변을 임원분들이 듣고 꼬리질문을 하던, 평가를 하던 하는 형식 같았습니다.

(위 복기본에서 '면접관A' 분이 인사팀이셨습니다.)

자세한 내용은 위 블로그에 다 담았으니 참고바랍니다.

 

  • 건강검진

LG그룹은 특이하게도 합격 발표 전에 건강검진을 진행합니다. 즉, 면접대상자였으면 검진을 받아야 합니다. 설사, 불합격이라 하더라도요. 그렇기 때문에  LG에게 붙은 유명한 별명이 '피뽑탈' 이었습니다.

LGD의 검진을 진행하는 병원은 전국에 그렇게 많진 않았습니다. 필자는 경기도에 살았기 때문에 가장 가까운 병원은 서울 종로에 있었습니다. 주말에도 검진이 가능하기에, 중고신입이였던 저는 주말에 검진을 받았습니다.

 

검진은 면접이 끝나고 난 뒤, 대략 1주일정도 (수도권은 1주일, 비수도권은 4일?)의 시간을 주었습니다. 

검진이 끝나면 2일 뒤 회사로 결과가 전달되고 저희에게는 결과를 알려주지 않습니다.

 

다만, LGD 인사팀으로부터 개인번호로 전화올 때가 있는데  이는 재검대상자인 경우에 해당합니다. 실제로 검진을 일찍 보고 오신분들 중에서는 재검요청을 받으신 분들이 꽤 많았습니다.

 

Q. 그럼 재검대상자였던 분들은 합격시그널인가요?

A. 진짜 이거로 불타는 토론들 많이하셨는데, 전혀 아닙니다. 재검탈 직접 봤습니다. 

결과도 안알려주는데 재검대상자한테까지도 결과를 안알려줬다 심각한 질병이었다면 전적으로 회사의 책임이라 이부분은 합격/불합격 여부 상관없이 재검연락을 하는 듯 합니다.

 

 

다만 진짜 합격시그널은 따로 있습니다.

직무변경 전화입니다. 

직무변경의 의미는 저도 잘 모릅니다. 팀장님의 픽인지, 해당 지원직군은 불합격할 점수지만 2지망은 합격할 점수라서 연락을 한건지.  이건 면접관,인사팀 아니면 모릅니다. 

아무튼 직무변경 전화가 왔다면 정말 굉장히 높은 확률로 합격입니다. 직무변경 연락오신분들 중 불합하신분은 제가 아직 못본거 같습니다.  만약 직무변경을 원하지 않는다고 답변을 하셨다면 불합하셨을수도 있지만, 이건 제가 사례를 보진 못했네요.

 

 

끝으로, 22년 상반기 채용을 준비하면서 알기 힘들었던 정보들. 자세하게 풀어놓은 블로그를 찾지못해서  많이 힘들었었는데요. 합격하면 꼭 내가 대외비 지키는 선에서 자세하게 다 풀어놔야지! 라고 다짐했는데 지키게 되네요 ㅎㅎ

궁금한거 생기면 언제든 댓글주세요!

반응형
반응형

파이썬을 배우기 시작하면 처음에 마주하게 될 개념이 리스트,튜플,딕셔너리일 것입니다.

C/C++로 치면, 배열과 map같은 애들인데  파이썬에서는 데이터분석이나 업무자동화(엑셀을 다루는)의 경우에는 위 개념들이 항상 쓰이기 때문에 사용빈도가 체감상 많이 높은 듯 합니다.

 

  • 리스트?

리스트라는 것은 문자를 담고 있는 배열이라 보시면 됩니다. 

리스트

리스트는 위에서처럼 대괄호 표시 [] 를 사용하여 안에다 원소를 담는 형식입니다.

 

(이어서 작성 예정)

반응형
반응형

모든 언어가 그렇듯 개개별 프로그래밍 언어는 자료형이 존재합니다.

C언어라면 int 정수형, char 문자형, double 실수형 등등이 있습니다.

파이썬도 마찬가지입니다.

구글코랩 사용

각각 변수들의 타입을 확인해보니 a는 float(실수형) , b와 c는 정수형 d는 문자형으로 나옵니다.

C언어와 다르게 일일이 int a라던지 char b라던지, 이런 식으로 잡아줄 필요는 없다는 것에서 벌써 행복하네요.

C언어로 코테 그만보기 위해 우리 다같이 탈출갑시다.

 

정수나 실수는 그냥 저희의 직관대로 정의내리면 되는데, 문자를 선언할 때는 큰 따옴표와 작은 따옴표에 대해 헷갈려하실 수도 있습니다. 결론부터 말씀드리자면, 둘다 뭐를 써도 상관없습니다.

큰따옴표든 작은따옴표든 문자열로 인식을 합니다.

하지만 이렇게 혼용하는건 안됩니다. 그리고 또 하나 좋은 팁!

씝떡 빙의

문자열 안에 따옴표를 문장기호로 인식을 잘 한다는 것입니다. C언어였다면 Escape처리를 위해 백슬래시를 걸어야만 했는데 파이썬은 그딴거 없습니다. 벌써부터 남다른 언어라는 냄새가 납니다.

 

그러면 우리 문자열을 갖고 좀 더 배워보도록 합시다. 모든걸 다 알 필요는 없고 자주쓰이는 애들만 다뤄서 여러 프로그램을 뚝딱 만들어봅시다.

 

  • 문자열을 쪼개보다.

C언어에서는 문자열에 관련된 함수들을 사용하기 위해서는 string.h 헤더파일을 불러와서 strlen, strcpy, strcmp 등등을 했습니다. 파이썬도 동일한 함수가 있습니다. 근데 C언어와 다르게 헤더파일같은건 선언안해도 기존에 다 내장되어있기에 아주 훌륭합니다.

 

먼저 제 블로그 명인 Crush on Study를 문자열 변수에 담아보도록 합시다.

네, 잘 담겨졌고, 잘 출력됩니다. 문자열을 다루다보면 가장 많이 사용되는 함수가 바로 문자의 길이를 알고자할때입니다.

C언어에서는 strlen함수였는데 파이썬에서는 len입니다.

파이썬
C언어

짜쟌, 이게 다에요. 딱봐도 파이썬이 훨씬 간단해보입니다. (C언어에서 길이 15로 뜨는건 널포인트까지 계산해서 그렇습니다.)

 

길이구하는 함수 배웠고... 이번엔 한 문자열에 동일한 문자가 몇개있는지 카운팅해보는 함수도 알아봅시다.

파이썬의 count함수입니다.

C언어에서의 count코드를 구현한 것입니다.

파이썬은 혁명입니다.

 

이번에는 문자열 슬라이싱을 해보고자 합니다.

슬라이싱은 문자의 몇번째 위치들만 따로 모아보고싶거나, 문장의 어느부분까지만 끊을 때 주로 사용합니다.

그 이외에도 다양한 경우일 때도 사용하니까 알아두면 좋습니다. 이거도 쉬워요.

문자열 슬라이싱입니다. 주석처리로 달은 것처럼  0부터 시작해서 9까지 2칸씩 띄어서 출력해라라는 의미인데요.

우리 C언어에서도 배웠듯이 배열의 첫 인덱스넘버는 0입니다.

즉, num[5] = {1,2,3,4,5}; 로 정의를 했다면 1은 num[0]과 대응됩니다. 파이썬도 똑같습니다.

출력을 할 때, 인덱스 0 이상 ~ 10 미만 까지만 출력하되, +2씩해서 출력. 

 

따라서, a[0] / a[2] / a[4] / a[6] / a[8]을 출력하는 것입니다.

a[0] = C

a[2] = u

a[4] = h

a[6] = o

a[8] = (n과 S사이의 스페이스)

 

이렇게 잘 출력되어있음을 알 수 있습니다.

오케이 그럼 여기서 응용해서 우리는 이렇게도 다뤄볼 수 있죠.

a[0:]은 0부터 문장의 끝까지 출력하라는 걸로 사실상 print(a)와 같습니다.

a[:10]은 문장의 처음부터 길이 10미만까지만 출력하라합니다.

a[::2]는 문장을 처음부터 끝까지 출력하되 +2씩 해서 a[0],a[2],....,a[N-2],a[N]까지 출력하라는 거구요.

a[::-1]은 맨뒤에서부터 거꾸로 출력하라는 뜻입니다. 0이 문장의 시작부분이면 -1은 문장의 끝부분입니다.

그럼 a[::-2]로 출력하면 대충 문장이 뒤집힌 다음 인덱싱이 -2씩 출력되겠네요?

 

이렇게 슬라이싱하는 것도 가능하고, 문자열을 이어붙이는것도 가능합니다.

다 응용에 불과합니다.

그러면 여기서 간단한 퀴즈!

네모칸에 들어갈 코드를 짜보세요.

반응형
반응형

예로부터, 사업을 시작하거나 부동산 투자를 할때 우리는 항상 은행으로부터 대출을 빌리거나 했습니다.

부자가 아닌 이상!

클라우드는 프로그래밍 세계의 '은행' 역할을 한다보면 됩니다. 적절한 비유인듯 하네요.

클라우드란 기업의 인프라와 IT자원을 빌려주는 서비스 업종입니다. 일반적으로 기업은 주력이 되는 비즈니스를 키워감으로써 이익을 창출합니다. 근데 대부분의 업종은 컴퓨터 네트워크를 기반으로 업무를 보는 일이 많죠. 회사의 서버라던가, 기업을 운영하면서 쌓인 데이터들을 저장할 스토리지라던가. 이런 서비스까지 자기들이 직접 구축하고 관리하면서

본인들의 비즈니스를 키워가는 것. 불가능하지않지만 확실히 어렵고 투자비용이 클 겁니다.

 

그래서 기업이 비즈니스에만 집중할 수 있도록 인프라와 IT자원을 담당해서 케어해주는 일. 이게 클라우드 서비스회사가 하는 일입니다.

 

대표적으로 너무나도 잘 아는 아마존(AWS) / 구글(GCP) / 마이크로소프트 (Azure)가 있고 국내기업으로는 KT / Naver가 있습니다.

또는 삼성SDS / LG CNS처럼 위 클라우드 서비스회사와 협업하면서 고객에 필요한 소프트웨어를 구축해주는 일을 하는 회사도 있습니다.

 

그럼 클라우드에는 어떤 종류가 있는지 먼저 살펴봅시다.

  • Private Cloud : 보안이 중요한, 예를 들면 기밀정보나 자산과 관련하여 외부로부터 접근을 막는 것이 중요한 금융업계에서 각광받는 클라우드 Deployment Service입니다. 이 경우는 이 클라우드를 사용하는 기업이 아닌 이상 그 누구도 접근할 수 없습니다.
  • Public Cloud : Private과 반대로 외부에서도 쉽게 접근이 가능한 클라우드 서비스입니다. 보통 많은 사람들이 사용하는 웹페이지같은데서 사용하는데요. 가끔 웹페이지가 떡상해서 동접하는 유저들이 엄청 많을 때, '트래픽' 초과때문에 페이지가 다운되었다! 이런 말 하실 때가 있을겁니다. 그러한 트래픽 초과를 막기 위해 동적으로 서버를 늘려서 유저의 유입을 받아주는 Deployment service입니다.
  • Hybrid Cloud : Private과 Public 둘의 특징을 모두 갖고 있습니다. 금융업계가 Private에서 Hybrid로, 뿐만 아니라 많은 기업들이 Hybrid로 옮기는 추세입니다. 개인정보같은 사항은 Cloud Service Provider들이 제공하는 클라우드 서비스를 믿기 힘드니까, 사용자(기업)만 접근이 가능한 Private을 쓰되, 고객(기업의 고객)들이 트래픽 초과없이 드나들 수 있도록 Public한 특징도 보유한 것이라 볼 수 있겠습니다.
  • Community Cloud : 동일한 클라우드 서비스를 사용하는 기업끼리는 데이터 교류가 되도록 하는 클라우드 서비스입니다. 보통 대기업의 계열사들이 이런 서비스를 쓰곤 합니다. 같은 계열사끼리 공유하는 환경이죠.

위 4가지가 Deployment Service라는 클라우트 컴퓨팅의 종류 중 하나였구요. 다른 종류는 서비스 모델이라 해서 IaaS,SaaS,PaaS라는게 있습니다. 다음 포스팅에서 서술해보겠습니다.

반응형
반응형
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
import pandas as pd

# 1. 데이터 프로세싱

data = pd.read_csv('gpascore.csv')

data = data.dropna()
 # print(data.isnull().sum())
 # data = data.dropna()  빈칸 제거
 # data = data.fillna(100)  빈칸 100으로 채움
 # exit()  # breakpoint임

ydata = data['admit'].values

xdata = []
for i,rows in data.iterrows():  # 판다스에서 쓰는 것으로 data라는 데이터프레임을 가로 한줄씩 출력
    xdata.append([rows['gre'], rows['gpa'], rows['rank']])

# 2. 모델 구현

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(120, activation = 'relu'),
    tf.keras.layers.Dense(300, activation = 'relu'),
    tf.keras.layers.Dense(1, activation = 'sigmoid')
])
 # binary_crossentropy는 0,1사이의 확률 문제에서 손실값을 보정해주는 함수로 자주 쓰임
 # adam은 그냥 대표적인 경사하강법 함수
model.compile(optimizer = 'adam', loss = 'binary_crossentropy' , metrics = ['accuracy'])

model.fit(np.array(xdata),np.array(ydata), epochs = 500)

# 3. 예측값 넣기

showme = model.predict([ [825,3.64,1], [0,4.01,1]])
print(showme)

 

반응형
반응형

데이터분석은 제조업에서 수율개선 및 공정 개선점을 발견하는데 좋은 이정표가 되어줍니다. 디스플레이 하나를 만드는데 수많은 공정데이터가 쌓이게 되는데요. 이러한 데이터표본을 컴퓨터에게 제시해주고 정답을 찾기 위한 가이드라인. 메뉴얼까지 제공하여 학습을 시키는 것이 머신러닝입니다.

 

반대로 딥러닝은 데이터표본만 컴퓨터에게 던져주면, 컴퓨터가 알아서 가이드라인을 짜고 분류를 하여 학습을 시작합니다.

 

머신러닝의 대표적이면서도 핵심 예시는 선형회귀분석입니다.

1차 선형함수로 되어있고, 결과값을 y라 한다면  x는 데이터 값들을 의미하구요.  기울기 a는 가중치를, 절편 b는 보정치를 의미합니다.

출처 - IT용어위키

빨간색 선은 주어진 데이터표본에 가장 최적화된 기울기 값을 찾기 위해 가설을 세운 것들입니다. 물론 우리 눈에는 어떤 기울기가 제일 적합한지 보이지만, 컴퓨터는 아직 모르기에 이런 식으로 가설들을 세웁니다.

(최적화되었다는게 오차 0를 의미하는 것은 아닙니다.)

 

'코딩애플' 이라는 유튜브에서 참고했던 내용인데 예시를 너무 잘 들어주셔서 인용하면서 복습해보고자 합니다.

수능성적을 예측하기 위해서 3월부터 10월 모의고사까지의 성적을 참고하고자 합니다.

수학 모의고사 가중치 결과값
3월 - 68점  0.05 ??
4월 - 66점 0.05
6월 - 84점 0.3
7월 - 84점 0.1
9월 - 92점 0.4
10월 - 88점 0.1

이렇게 주어졌어요. 그러면 여기서 데이터 값은 x라하고 w (기울기)는 가중치가 됩니다.

퍼셉트론

이런 상태에요. 그러면 저거 일단 계산을 먼저 해봅시다.

 

3월 = 68*0.05 = 3.4

4월 = 66*0.05 = 3.3

6월 = 84*0.3 = 25.2

7월 = 84*0.1 = 8.4

9월 = 92*0.4 = 36.8

10월 = 88*0.1 = 8.8

 

y = w1*x1 + w2*x2 + w3*x3 + w4*x4 + w5*x5 + w6*x6 = 85.9점   즉, 수능 수학 성적을 86점이라고 예측을 했습니다.

가중치 값은 저희가 임의로 넣은거에요. 보통 평가원모의고사 6,9월께 중요하잖아요? 28살 아죠씨라 수능친지는 까마득하지만 ㅎㅎ;;;

 

근데 실제 수능 수학점수가 92점이 나왔다? 그럼 오차값이 6점이나 나죠?  그럼 이제 여기서 컴퓨터가 가중치를 바꿔도 보고, 보정값 b를 넣어주면서 이 오차값을 최소한 줄이고자 노력합니다.

 

그 가중치를 바꾸기 위한 공식을 cost reduction이라 합니다. cost (w,b)로 표현을 하는데요. 간단합니다.

실제값 y1과  예측값 y2 사이의 차이들의 total sum을 구합니다. 그 sum에다 '제곱'을 한 뒤, 그걸 데이터 표본개수로 나눕니다.

수식으로 치면 이런거죠.  제곱을 해주는 이유. 이걸 평균제곱오차라 하는데, 예측값 (위에 ^ 달린 애)이랑 실제값의 차이가 음수거나 양수일 때가 있습니다. 이걸 제곱을 안해주고 더해버리면 오히려 total sum값이 0에 가까워지는 이슈가 발생해요. 오차는 실제로 많이 났는데  정확성이 높다! 라고 판정해버리는거죠. 그래서 제곱을 해주는 겁니다.

 

머신러닝을 더 깊게 들어가면 글이 너무 길어지니까, 일단 딱 여기까지만 다루고요. 딥러닝은 어떤지 이걸 이어서 생각해보겠습니다.

 

머신러닝은 위처럼 가중치와 보정값으로 구성되어있는데, 딥러닝도 똑같습니다. 가중치와 보정값이 있는데  여기에 추가로 '상황별 케이스'를 고려합니다. 즉, Input Layer와 Output Layer로 이뤄진 퍼셉트론에서 이 중간에 'Hidden Layer'라는 노드가 추가됩니다. 이러한 딥러닝 퍼셉트론들이 모이고모인게 '뉴럴 네트워크'입니다.

 

대충 그림 그려봤습니다. 중간에 추가된 노드들을 Hidden Layer라고 합니다. 즉, 여기선 3가지 케이스를 염두해두고 Input Layer에서 임의의 가중치를 두고 계산해낸 값을 H1에 저장했다. 또 다른 가중치를 두고 계산해낸 값을 H2, H3에 각각 저장했다. 라고 볼 수 있습니다.

 

그렇게해서 다양한 '케이스'들을 고려해서 도출해낸 결과값이 이겁니다~ 하는게 딥러닝. 인데.

그냥 Hidden Layer 하나 추가했다고 머신러닝이 갑자기 딥러닝이 되고 그런건 아닙니다. 

이 Hidden Layer에서 추가되는게 바로 활성 함수입니다. (Activation Function)

 

활성 함수는 여러개가 있겠지만, 많이 쓰이고 이것만큼은 알아가야한다는게 몇개 있어서 꼽아 봤습니다.

 

1) 시그모이드

Binary 분류의 대표적인 함수로 보통 출력층에서 자주 사용됩니다. 0과 1 사이의 범위값을 가지므로 보통 '확률'을 보여줄 때 씁니다.

시그모이드

시그모이드 함수의 원형입니다. x축 데이터들을 입력하면 결과값은 0과 1사이의 실수로 출력됩니다. 시그모이드는 사실

그리 좋은 함수는 아닙니다. Vanishing Gradient Problem이라 해서 고질적인 Output층의 신뢰도 하락을 일으키는게 있는데요. 굉장히 많은 Input층을 0과 1이라는 범위 내로 '우겨넣는' Activation Function때문에 Input에서 큰 변화가 일어나도 Output에서는 그 변화가 미미하기 때문입니다.

 

또한, 시그모이드는 데이터가 많으면 많을수록 그리 효율성이 좋지 않아 현업에선 잘 쓰지않습니다. 마치, 버블소트 알고리즘처럼 '교육용 입문개념'에 그쳐있습니다.

 

시그모이드와 같이 교육에서만 다루는 활성함수가 하나 또 있습니다.

2) tanh (하이퍼볼릭 탄젠트)

얘도 Input 데이터는 방대한데, Output은 [-1,1]로 굉장히 짓이겨놓은 식입니다.

 

요약

- 시그모이드와 tanh는 Output의 범위를 짓이겨놓았기 때문에 Input에서 큰 변화가 있더라도 Output에선 경미하게 발생한다.

 

그럼 어떤 함수를 쓰는게 좋냐? 대표적인게 ReLu입니다.

 

3) ReLu

- Relu의 원형은

렐루 함수

음수 데이터값은 그냥 모두 0으로 반환하고, 양수 값에는 제한이 없는 상태로 둡니다.

따라서, 데이터를 짓이겨넣음으로써 발생하는 기울시 소실 (Vanishing Gradient Problem)을 막을 수 있어요.

또한, 기울기가 일정하기 때문에 가중치 업데이트도 다른 함수보다 훨씬 빠릅니다.  뭐 비선형성을 띠는 함수들은 가중치 업데이트에서 시간이 좀 걸리는데 얘는 간단하니까요!

 

다만, ReLu는 Hidden Layer층에서만 사용하는걸 권장하는 편입니다.

가중치 업데이트 과정에서 total sum이 0이 되면 그 뒤론 계속 0만 반환합니다. 즉, 죽어가는 뉴런이 되어버리는거에요.

따라서 Output층엔 쓰면 안됩니다. 차라리, ReLu로 Hidden Layer층 활성화시키고, Output층으로 계산때릴 때, 결과값이 뭐 0과 1 사이의 확률로 나타내야한다! 하면 시그모이드를 채택하는게 적합할 것입니다.

 

 

* 경사하강법

마지막으로 짚고 갈 것은 경사하강법입니다. 비선형 데이터함수가 주어졌다고 가정해봅시다.

출처 - 리브레위키 '경사하강법'

이런 cost가 주어졌다 합시다. 이 함수 그래프에서 C는 cost를 의미하고 y는 가중치를 의미합니다. 아무 사진이나 갖고온거라 변수는 다를 수 있지만 아무튼  x축이 가중치  y축이 cost다! 라고 보시면 되겠습니다.

 

맨 처음에는 제일 왼쪽에 있는 빨간색 지점에 가중치를 뒀다 생각해봅시다. 근데 cost 비용이 상당히 큽니다. 딱 봤을 때,

Best! 부분이 가장 낮은 cost값을 갖고 있어요. 그럼 어떻게해야하나? cost를 낮추는 방향으로 움직여야 합니다.

그 방향을 어떻게 정해주느냐? 일단 기울기가 양과 음이 바뀌는 그 순간에 주목해봅시다. 양과 음이 바뀌는 그 순간은 기울기 값이 0입니다.

 

따라서, 현재 임의로 지정한 가중치가 '음의 기울기'라면요? 양의 기울기가 되도록 값을 더하게 될 것입니다.

빨간부분에 해당하는 파란색 함수의 w1값과 초록색 선형근사 함수의 기울기값. 이 2개를 합하면 됩니다.

즉, 음의 기울기인 경우 선형근사식의 기울기 + w1로 하면 0값에 가까워지니까요.

그럼 눈치 빠르신분은들은 양의 기울기인 경우에는 선형근사식의 기울기 - w1로 하면 0값에 가까워지니까 

이를 그림으로 생각해보면 기울기가 0인 지점을 향해 달려가는 '경사하강하는 모습'이 되지 않겠습니까?

 

근데, 이걸로 끝이 아닙니다. 위에 그린 함수처럼 local적인 부분에서 minimum인 지점이 있어요. 인간이 보기엔 딱 봐도 최소비용 지점이 보이는데 컴퓨터는 경사하강을 진행하다보면 기울기가 0이네? ㅇㅋ 여긴가보다~ 하고 멈추거든요.

 

그래서 등장한게 'Learning Rate'개념입니다.

말 그대로 경사하강에 대한 비율을 정해주는 것입니다. Learning Rate가 많이 작으면 정밀하게 기울기 0값을 향해 찾아가겠지만 Local Minimum을 피하긴 어렵습니다. 쉽게 말해서 함정을 '점프'해가는 슈퍼마리오같은애라 보면 됩니다.

 

그래서 적절한 Learning Rate값을 찾아주는 것도 또 하나의 중요한 포인트입니다. 과하지도, 부족하지도 않은게 좋거든요.

 

 

 

근데 딥러닝에선 keras가 이거 다 알아서 해줍니다 ㅋ

 

 

아무튼 여기까지 개념복습을 마치겠습니다.

반응형
반응형

 

현대모비스 코딩테스트는 180분을 주고 알고리즘 5문제를 푸는 것이었다.

 

근데 말이 알고리즘이지 단순구현 수준도 꽤 있었다. 사용 가능한 언어는 C/C++/Python/Java였고 1문제는 반드시 C나 C++로 풀어야만 한다.

 

나는 원래 주력언어가 C언어라 모든 문제를 C언어로 풀었다.

 

1번 : 1솔

2번 : 1솔

3번 : 0.7솔

4번 : 0솔 (문제 자체를 이해 못했음. 남들은 푼거같은데 ㅋㅋ ㅠ)

5번 : 0.5솔

 

대략 3.2솔이였고 패스했다. 융합직군은 0솔해도 붙는거 같다. 융합은 애초에 코테는 참고수준이라 하셨다.

 

1번은 그냥 단순구현이었다. 내가 백준이나 프로그래머스를 많이 풀어본건 아니라 어떤 문제가 비슷했다라곤 조언을 못해주겠다. ㅈㅅ 

 

2번도 단순구현이였다. 2차원배열 문제였는데 예시로 2차원배열을 주면 그 값을 상하좌우 반전시킨 상태로 출력해보라는 거였다. 무난한 문제였음 ㅇㅇ. 뭐 다른 알고리즘 풀이가 있는진 모르겠다. 근데 비슷한 문제는 아닌데 CodeUp이라는 사이트에서 C언어100제를 보면  2차원배열 문제들을 모아둔게 있는데 거기꺼 참고해봤으면 도움될 수 있었을듯 하다.

 

3번은 문자열이였다. 비밀번호 설정이라는 컨셉이다. 우리가 회원가입을 할 때, 숫자는 최소 8자리~ 영문, 특수문자 섞고~ 연속된 숫자 안되요~  이런거 많이 보지않았는가?  그냥 그걸 구현해봐라! 라는 문제였다. 나는 웬만한 조건은 맞췄는데 특수문자쪽은 뭐 어떻게하라는건지 이해가 안가서 걍 그거빼고 했다. 그랬더니 0.7솔? 정도하더라.

 

4번은 패스. 뭔 정육면체 사진주고 이렇게저렇게 해봐라 했는데 기억도 안난다. 이거는 그냥 내가 빡대가리라 문제 이해를 못해서 쳐다보지도 않음 ㅇㅇ

 

5번. 5번이 제일 어려웠다는 평이 많았다. 백준 배낭문제? 같다했는데  프로그래머스에서도 어디서 본듯한 문제같았다. 수준은 LV3정도다. 기본적인 정렬,탐색 알고리즘쪽은 아니였다. 처음에 그리디인줄 알았는데 톡방사람들보니까 냅색?알고리즘 문제라고 하더라. 나는 근데 냅색알고리즘이란걸 처음 알아서 몰랐고 그냥 그리디로 접근했더니 죠또 안풀리더라 ㅠ

 

아무튼 현대모비스는 코딩테스트는 거의 참고용이라곤 하더라. 작년까지는 이런거 없었다고 한다. 올해부터 새로 SW개발&SW융합이라는 전형이 생겼는데 코테 못해도 SW프로젝트 경험이 있다면 기회를 최대한 많이 베풀어주려는거 같았다. 다들 두려워말고 sw직군으로의 커리어에 꾸준히 도전해봤으면 한다.

 

나도 비전공자지만 sw가 미래인거같다. 정말 ㅎㅎ!

반응형
반응형

Display Driver IC는 디스플레이를 화면에 송출하기 위해 반드시 필요한 디스플레이 구동칩입니다.

반도체의 한 종류로 비메모리에 속합니다.

 

DDI는 T-con으로부터 컨트롤을 받으며 RGB서브픽셀에 데이터신호를 전송합니다.

DDI는 크게 Gate IC / Source IC 2개로 나뉘는데요.

출처 - 삼성디스플레이 톺아보기

외부로부터 터치든 AP든 신호를 전달받게되면 T-con은 DDI를 제어하게 됩니다. 사진에 나온 것처럼 FPCB (T-con회로를 품고 있는 플렉서블 PCB)와 연결된 DDI는 신호를 받고 TFT를 어떻게 컨트롤할지 명령을 내립니다.

DDI로부터 신호를 전달받으면 각각의 RGB서브픽셀에 놓여진 TFT전극은 문턱전압 이상을 인가받으면 전류가 흐르면서 불이 켜지는 식입니다.

 

따라서 DDI가 없으면 불을 못켜요.

DDI는 크게 2가지로 나뉩니다. Source IC / Gate IC에서 Source IC는 영상신호의 양을 조절해서 RGB색상의 값에 관여합니다. Gate IC는 좀 다릅니다. 얘는 Switch ON/OFF 역할을 하는데 서브픽셀들을 키거나 끄거나 하는 것이므로 일부 제품에서는 아예 TFT에다가 Gate IC를 박곤 합니다.

디스플레이에서 DDI가 있는 곳은 '베젤'이라 합니다. 시계 좋아하시는 분들은 베젤에 익숙할거에요. 테두리를 의미합니다. 

 

그럼 이제 T-Con을 봅시다.

T-con은 Timing Controller라 해서 외부 액세스포인트(AP) 혹은 터치신호를 받음으로써 DDI에게 명령을 내릴지말지 판단하는 디스플레이의 '두뇌'입니다.

T-CON과 DDI

외부로부터 AP든 터치든 Data신호가 들어오면 T-con이 이걸 받고 Row DDI (Gate IC) / Column DDI (Source IC)로 명령을 뿌립니다.

반응형

+ Recent posts